使用Boost 1.53在链接阶段进行未定义的引用

时间:2013-05-16 14:11:05

标签: c++ linux boost redhat

我在Red Hat Linux rel 5.5上使用g ++ 4.1.2和Boost 1.53。链接过程中存在一个问题,我不清楚。我收到错误消息:

/usr/local/boost_1_53_0/stage/lib/libboost_thread.so: 
 undefined reference to     `std::bad_exception::what() const@GLIBCXX_3.4.9'

/usr/local/boost_1_53_0/stage/lib/libboost_thread.so: 
undefined reference to `std::bad_alloc::what() const@GLIBCXX_3.4.9'

collect2: ld returned 1 exit status

似乎存在与我正在链接的libstdc++.so文件版本相关的问题。如果我替换隐藏和显示此文件,我可以让我的程序链接。但是,我希望能够像我在介绍Boost库和并发线程之前一样“制作”。

如果您有任何见解,请帮助阐明这个问题。

2 个答案:

答案 0 :(得分:0)

请尝试通过yum安装。

yum install boost 你不会遇到这样的问题。尝试包含rpmforge和epel yum存储库。

答案 1 :(得分:0)

http://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html#abi.versioning表明GLIBCXX_3.4.9是GCC 4.2.0中libstdc++.so使用的符号版本,因此如果Boost库需要该版本,则表示它是使用GCC 4.2编译的.X

这意味着你不能将库与GCC 4.1.2链接的程序一起使用,你需要链接到GCC 4.2.0或更高版本

libstdc++.so向后兼容但不向前兼容,因此您可以使用一个版本编译程序并将其链接到较新版本,但无法使用较新版本进行编译并链接到较旧版本。