boost - boost mpi 示例编译
问题描述
我打算使用boost_mpi,但是我在编译测试程序时出现了以下问题。
问题
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_mpi.so: undefined reference to `ompi_mpi_info_null'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_mpi.so: undefined reference to `ompi_request_null'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_mpi.so: undefined reference to `ompi_mpi_packed'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_mpi.so: undefined reference to `ompi_mpi_comm_null'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_mpi.so: undefined reference to `ompi_mpi_errors_return'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_mpi.so: undefined reference to `MPI::Comm::Comm()'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_mpi.so: undefined reference to `ompi_op_set_cxx_callback'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_mpi.so: undefined reference to `ompi_mpi_cxx_op_intercept'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_mpi.so: undefined reference to `ompi_mpi_datatype_null'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_mpi.so: undefined reference to `ompi_mpi_comm_world'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_mpi.so: undefined reference to `ompi_mpi_unsigned_long'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_mpi.so: undefined reference to `ompi_mpi_group_empty'
collect2: error: ld returned 1 exit status
make[2]: *** [Test] Error 1
make[1]: *** [CMakeFiles/Test.dir/all] Error 2
make: *** [all] Error 2
其他信息
我的 libboost 是通过 apt-get install libboost-dev-all 安装的,版本号是 1.54。我的 GCC 版本是 4.8.4,MPICH 版本是 3.2。
这是我的测试代码:
#include <boost/mpi.hpp>
#include <iostream>
int main(int argc, char *argv[])
{
boost::mpi::environment env{argc, argv};
boost::mpi::communicator world;
std::cout << world.rank() << ", " << world.size() << '\n';
}
解决方案
您使用的是哪个 Ubuntu 版本?上面看起来有点奇怪。看起来像一个非常旧的系统?
apt -y install libboost-mpi-dev libmpich-dev openmpi-bin
应该设置你就好了。libboost-mpi-dev
不属于boost-all
. 之后构建您的代码:
mpicxx -std=c++11 -o test test.cpp -lboost_mpi
你的代码在哪里test.cpp
。测试:
mpiexec -np 4 ./test
推荐阅读
- scala - spark使用带有选项字段的案例类将数据框转换为数据集
- gitlab - Gitlab CI - 唯一的内部版本号
- javascript - 重新加载时,显示加载 html 页面并重定向到正确的页面
- spring - 如何将 Oracle Interval Day 到 Second 数据类型映射到 Java 对象
- dart - 仅运行交错动画的一部分
- file - 如何在我的 weebly 网站中嵌入一个简单的 Grep 类型的文本文件字典?
- asp.net-mvc - 无限重定向到 ~/Account/Login MVC 5.2.3
- javascript - 从字符串中的第一个句子中获取最多 8 个单词
- xcode - 当我们从全屏退出时,Vimeo 播放器使 ios ionic 应用程序崩溃
- java - 将变量从一个片段传递到另一个片段