链接错误 stdc++
Linking error stdc++
为什么会出现这些链接错误?
以下是链接错误的简短示例,有数百个相似之处:
/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): 对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: 对__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: 对__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): 对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: 在函数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: 在函数~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: 在函数GO_C_Align::de_init()': /home/go/NetBeansProjects/Arbete_216/Ajourwork/Utilities/Image/Align/GO_C_Align.cpp:187: undefined reference to
运算符中删除' /home/go/NetBeansProjects/Arbete_216/Ajourwork/Components/TheRealDeal/GUI/linuxobj//GO_C_Align.o: 在函数中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
运算符 new[](无符号长整型)'
我在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# file libavcodec.so.57.27.101libavcodec.so.57.27.101:ELF 64 位 LSB 共享对象,x86-64,版本 1 (SYSV),动态链接,BuildID[sha1]=0x6bf103d9a0531802fdcc608a8032a77d5b89b898,剥离root@antec:/usr/local/lib# file/lib/x86_64-linux-gnu/libc.so.6/lib/x86_64-linux-gnu/libc.so.6:指向"libc-2.13.so"的符号链接root@antec:/usr/local/lib# file/lib/x86_64-linux-gnu/libc-2.13.so/lib/x86_64-linux-gnu/libc-2.13.so:ELF 64-bit LSB 共享对象,x86-64,版本 1 (SYSV),动态链接(使用共享库),BuildID[sha1]=0xb5053aa2420700afc9687ab357a8d5d89fcb1bd0,适用于 GNU/Linux 2.6.26,已剥离
包含在FFmpeg源代码中的示例编译和链接很好。
是否有任何其他外部部件可能会产生这些错误?C++11?任何迹象都可能有所帮助。谢谢。
您可能正在使用clang
作为变量CXX
的值。相反,您应该使用 clang++
,因为clang
前端不会隐式链接到C++标准库。
也许您应该将.so或.a的路径添加到项目中,而不仅仅是将其复制到项目文件夹中。
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 链接错误 stdc++