编辑:已解决,不正确的boost设置/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'所以我猜测GLIBCXX3.4.9一定是在使用bjam构建时找到的,但是在
locate libstdc++.so我用过
"strings /path/to/libstdc++.so | grep LIBCXX" 而且每个版本都只有3.4.8作为最新版本的GLIBCXX。
我对这个问题感到相当困惑。如有任何帮助,我们不胜感激!
发布于 2012-08-28 08:00:16
这确实意味着libboost_serialization.so是用较新版本的GCC编译的。
您确定没有安装其他版本吗?您的locate数据库是最新的吗?which g++显示了什么?
如果将-lstdc++放在编译命令的最后,会有帮助吗?由于liboost_serialization.so依赖于libstdc++.so,因此您应该正确地对它们进行排序。
https://stackoverflow.com/questions/12150091
复制相似问题