我正在构建一个应用程序,该应用程序使用需要 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 提供的。那么这里可能出了什么问题?
最佳答案
我不知道是什么原因导致我的链接器无法自行找到库... 然而,以下问题帮助我找到了解决问题的“解决方法”:how to force linker to use shared library instead of static library?
简单地强制我的链接器链接到库帮助..
gcc -o app app.o {other libs} /usr/lib/libstdc++.so.5
关于c++ - 针对 libstdc++.so.5 进行编译未找到符号 @GLIBCPP_3.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30481166/