0

我在 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 库和并发线程之前所做的那样一步“制作”。

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

4

2 回答 2

0

请尝试通过安装yum

yum install boost 你不会遇到这样的问题。

尝试包含 rpmforge 和 epel yum 存储库。

于 2013-05-16T14:20:10.947 回答
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向后兼容但不向前兼容,因此您可以使用一个版本编译程序并将其链接到较新的版本,但您不能使用较新的版本进行编译并链接到较旧的版本。

于 2013-05-16T14:46:24.403 回答