c++ - 针对 libstdc++.so.5 进行编译未找到符号 @GLIBCPP_3.2

标签 c++ c gcc g++ libstdc++

我正在构建一个应用程序,该应用程序使用需要 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/

相关文章:

java - 如何为 Traceroute C 文件创建 JNI 接口(interface)

gcc - ARM 交叉编译 helloworld

python - 是否有类似 AC_CHECK_LIB 的 python setup.py 构建指令?

c++ - flexlm 借用许可证 LM_BORROW_STAT 结构

c++ - C/C++ - 牛顿法的迭代计数器

c++ - 在 setiosflags 函数中使用十六进制标志

c - 这段代码在 GCC 中意味着什么?

ios - 无法为 arm (iOS) 交叉编译 C 库

类外部函数定义的 C++ 链接器错误

c++ - 写入按值函数参数是好的风格吗?