gpt4 book ai didi

c++ - 链接错误 stdc++

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:11:37 26 4
gpt4 key购买 nike

为什么我会遇到这些链接错误?

这是一个简短的链接错误示例,有数百个类似的错误:

/tmp/main-NtNkRQ.o: In function __cxx_global_var_init':
/home/go/NetBeansProjects/Arbete_216/Ajourwork/Components/TheRealDeal/GUI/../../../Components/TheRealDeal/GUI/main.cpp:(.text+0x10):
undefined reference to
std::ios_base::Init::Init()' /home/go/NetBeansProjects/Arbete_216/Ajourwork/Components/TheRealDeal/GUI/../../../Components/TheRealDeal/GUI/main.cpp:(.text+0x17): undefined reference to std::ios_base::Init::~Init()'
/tmp/main-NtNkRQ.o: In function
main': /home/go/NetBeansProjects/Arbete_216/Ajourwork/Components/TheRealDeal/GUI/../../../Components/TheRealDeal/GUI/main.cpp:123: undefined reference to __cxa_begin_catch'
/home/go/NetBeansProjects/Arbete_216/Ajourwork/Components/TheRealDeal/GUI/../../../Components/TheRealDeal/GUI/main.cpp:127:
undefined reference to
__cxa_end_catch' /home/go/NetBeansProjects/Arbete_216/Ajourwork/Components/TheRealDeal/GUI/../../../Components/TheRealDeal/GUI/main.cpp:127: undefined reference to __cxa_end_catch'
/home/go/NetBeansProjects/Arbete_216/Ajourwork/Components/TheRealDeal/GUI/../../../Components/TheRealDeal/GUI/main.cpp:123:
undefined reference to
std::terminate()' /tmp/main-NtNkRQ.o:(.data.rel.ro._ZTI26go_s_module_init_exception[_ZTI26go_s_module_init_exception]+0x0): undefined reference to vtable for __cxxabiv1::__class_type_info'
/tmp/main-NtNkRQ.o:(.data.DW.ref.__gxx_personality_v0[DW.ref.__gxx_personality_v0]+0x0):
undefined reference to
__gxx_personality_v0' /home/go/NetBeansProjects/Arbete_216/Ajourwork/Components/TheRealDeal/GUI/linuxobj//GO_C_Align.o: In function GO_C_Align':
/home/go/NetBeansProjects/Arbete_216/Ajourwork/Utilities/Image/Align/GO_C_Align.cpp:35:
undefined reference to
std::terminate()' /home/go/NetBeansProjects/Arbete_216/Ajourwork/Components/TheRealDeal/GUI/linuxobj//GO_C_Align.o: In function ~GO_C_Align':
/home/go/NetBeansProjects/Arbete_216/Ajourwork/Utilities/Image/Align/GO_C_Align.cpp:44:
undefined reference to
std::terminate()' /home/go/NetBeansProjects/Arbete_216/Ajourwork/Components/TheRealDeal/GUI/linuxobj//GO_C_Align.o: In function GO_C_Align::de_init()':
/home/go/NetBeansProjects/Arbete_216/Ajourwork/Utilities/Image/Align/GO_C_Align.cpp:187:
undefined reference to
operator delete' /home/go/NetBeansProjects/Arbete_216/Ajourwork/Components/TheRealDeal/GUI/linuxobj//GO_C_Align.o: In function GO_C_Align::init(int, int, GO_C_BufferManager*)':
/home/go/NetBeansProjects/Arbete_216/Ajourwork/Utilities/Image/Align/GO_C_Align.cpp:121:
undefined reference to
operator new[](unsigned long)'

我在 Debian 7 上,使用 Clang 编译器。代码是使用 makefile 系统构建的,使用了以下编译器标志

CXXFLAGS = -g -I /opt/intel/composer_xe_2015.1.133/ipp/include/ -Wno-deprecated -D_GNU_SOURCE  -D_REENTRANT -D__STDC_CONSTANT_MACROS -I/usr/include/postgresql/ -I/usr/local/Qt/5.2.1/gcc_64/include/QtX11Extras/ -I/usr/local/Qt/5.2.1/gcc_64/include/QtWidgets/ -I/usr/local/Qt/5.2.1/gcc_64/include/ -I/usr/local/Qt/5.2.1/gcc_64/include/QtGui/ -fPIC -fPIE -I/home/go/ffmpeg_build/include/ -I/usr/local/Qt/5.2.1/gcc_64/include/QtCore/  -fPIC -fPIE -I/home/go/ffmpeg_build/include/libavcodec -I/home/go/ffmpeg_build/include/libavformat/


$(CXX) -o xxx_GUI $(MAIN_FILE) $(TARGETROOT)/*.o $(TARGETROOT)/*.a $(DEFINE_FLAGS) $(INCLUDE_FLAGS) $(CXXFLAGS) -lpq -lippi -lipps -lippcore -lpthread -lgcrypt -lippvm -lippcv -lippcc -L/opt/intel/composer_xe_2015.1.133/ipp/lib/intel64 -L/usr/local/Qt/5.2.1/gcc_64/include/QtWidgets/ -L/usr/X11R6/lib/ -lXv -lX11 -lXext -ltar

如果我将 -lstdc++ 添加到我的编译器选项,FFmpeg 会给出链接错误。正如我在本网站的其他地方看到的那样,我已经将 FFmpeg 包含在外部“C”中。它没有帮助。但我认为这不是这里的问题。

FFmpeg 从源代码编译为动态库。 (当我链接静态库时,我有同样的行为。)

我已经用 ldd 检查了 FFmpeg 库,并且依赖项已经到位。我检查了 32/64 的混淆,但它似乎应该是 64。

root@antec:/usr/local/lib#文件libavcodec.so.57.27.101libavcodec.so.57.27.101:ELF 64 位 LSB 共享对象,x86-64,版本 1 (SYSV),动态链接,BuildID[sha1]=0x6bf103d9a0531802fdcc608a8032a77d5b89b898,剥离root@antec:/usr/local/lib#文件/lib/x86_64-linux-gnu/libc.so.6/lib/x86_64-linux-gnu/libc.so.6:指向 `libc-2.13.so' 的符号链接(symbolic link)root@antec:/usr/local/lib#文件/lib/x86_64-linux-gnu/libc-2.13.so/lib/x86_64-linux-gnu/libc-2.13.so:ELF 64 位 LSB 共享对象,x86-64,版本 1 (SYSV),动态链接(使用共享库),BuildID[sha1]=0xb5053aa2420700afc9687ab357a8d5d89fcb1bd0,用于 GNU/Linux 2.6.26,剥离

FFmpeg 源代码中包含的示例编译和链接良好。

是否有任何其他外部部件可能会产生这些错误? C++11?任何迹象都可能有所帮助。谢谢。

最佳答案

您可能正在使用 clang 作为变量 CXX 的值。相反,您应该使用 clang++,因为 clang 前端不会隐式链接到 C++ 标准库。

关于c++ - 链接错误 stdc++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35936108/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com