我在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库和并发线程之前一样“制作”。
如果您有任何见解,请帮助阐明这个问题。
答案 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
向后兼容但不向前兼容,因此您可以使用一个版本编译程序并将其链接到较新版本,但无法使用较新版本进行编译并链接到较旧版本。