0

编辑:已解决,不正确的升压设置 /facepalm

我一直在尝试在旧系统/集群上安装 boost-mpi。

安装 boost 并使用 bjam --with-mpi 后,我尝试编译 boost-mpi 设置教程附带的 hello_world 示例。我使用 mpic++ 为 bjam 提供了 mpi-autoconfig,当我使用以下内容进行编译时:

/../gnu/bin/mpic++ -I/home/user/boost_1_51_0 communicator.cpp -lstdc++ -L/home/user/boost_1_51_0/stage/lib -lboost_mpi -lboost_serialization

我收到以下错误:

libboost_serialization.so: undefined reference to `std::basic_istream<char, std::char_traits<char> >& std::basic_istream<char, std::char_traits<char> >::_M_extract<unsigned short>(unsigned short&)@GLIBCXX_3.4.9'

所以我猜测用bjam构建的时候肯定已经找到了GLIBCXX3.4.9,但是之后

locate libstdc++.so

我用了

"strings /path/to/libstdc++.so | grep LIBCXX" 

并且每个只有 3.4.8 作为 GLIBCXX 的最新版本。

我对这个问题感到很困惑。任何帮助表示赞赏!

4

1 回答 1

0

这确实意味着libboost_serialization.so是用较新版本的 GCC 编译的。

你确定你没有安装其他版本?你的locate数据库是最新的吗?显示什么which g++

如果你把-lstdc++最后一个放在编译命令中会有帮助吗?由于liboost_serialization.so取决于libstdc++.so您应该正确订购它们。

于 2012-08-28T00:00:15.640 回答