根据libstdc++.so.5编译时找不到符号@GLIBCPP_3.2
compiling against libstdc++.so.5 is not finding symbols @GLIBCPP_3.2
我正在构建一个使用第三方库的应用程序,该库需要libstdc++.so.5。直到最近,我还在使用libstdc++.so.6编译我的应用程序,它运行良好,但存在一些可移植性问题。
因此,我决定安装g++版本3.3.4,以便能够使用libstdc++.so.5编译我的应用程序。然而,现在我根本无法编译我的应用程序。无论是我的旧g++还是它的3.3.4版本…构建应用程序都会报告以下错误消息:
/opt/ExPansion/lib/libexpansion.so: undefined reference to `std::basic_istream<char, std::char_traits<char> >::basic_istream(std::basic_streambuf<char, std::char_traits<char> >*)@GLIBCPP_3.2'
编辑:有趣的可能还有以下命令的输出:
$ strings /usr/lib/libstdc++.so.5 | grep 'LIB'
GLIBCPP_3.2
GLIBCPP_3.2.1
GLIBCPP_3.2.2
GLIBCPP_3.2.3
GLIBCPP_3.2.4
GLIBC_2.0
GLIBC_2.3
GLIBC_2.1.3
GLIBC_2.1
GLIBC_2.2
GLIBCPP_FORCE_NEW
唯一让我感到奇怪的是以下内容:
$ nm /usr/lib/libstdc++.so.5
nm: /usr/lib/libstdc++.so.5: no symbols
这"正常"吗?我的库可能不包含所需的符号吗?我通过下载了这个库
yum install compat-libstdc++-33
所以它不应该引起任何问题。。
据我所知,@GLIBCPP_3.2是由我的libstdc++.so.5提供的。那么这里可能出了什么问题呢?
我不知道是什么原因导致我的链接器无法单独找到lib。。。然而,以下问题帮助我找到了解决问题的"变通方法":如何强制链接器使用共享库而不是静态库?
简单地强迫我的链接器链接到库就有帮助。。
gcc -o app app.o {other libs} /usr/lib/libstdc++.so.5
相关文章:
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- 将无符号char*转换为std::istream*C++
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- vscode g++链路故障:体系结构x86_64的未定义符号
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 如何理解将半精度指针转换为无符号长指针和相关的内存对齐
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- 使用gcc从静态链接的文件中查找可选符号
- C++中无符号字符溢出
- 使用无符号字符数组有效存储内存
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- VC++本机单元测试,找不到调试符号
- 为什么我必须在C++中添加一个赋值符号来声明一个数组
- 检查TCHAR数组输入是否为带符号整数C++
- 用符号版本替换对函数的所有调用
- 未解析的外部符号_MsiLocateComponentW@12.
- 如何打印boost多精度128位无符号整数
- C++模板函数,用于比较任何无符号整数和有符号整数
- 在 Mac 上使用 CMAKE 将 FFTW 和 FFTWPP 链接到项目中时未定义的符号