【发布时间】:2016-03-14 05:40:04
【问题描述】:
我正在尝试构建 mpi2,在 make 过程中遇到以下错误:
/usr/bin/ld: CMakeFiles/env.dir/env.cc.o: undefined reference to symbol '_ZN5boost6system15system_categoryEv'
/usr/local/boost-1.56.0/lib/libboost_system.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
我在运行 make 之前使用的 cmake 命令是:
cmake -DCMAKE_BUILD_TYPE=NativeRelease ../ -DBOOST_ROOT=/usr/local/boost-1.56.0/ -DBOOST_INCLUDEDIR=/usr/local/boost-1.56.0/include -DBOOST_LIBRARYDIR=/usr/local/boost-1.56.0/lib
我已尝试链接 libboost_system.so,但我不确定如何使用 cmake 执行此操作(我尝试将 -DCMAKE_CXX_FLAGS="-lboost_system" 添加到 cmake 命令,但这没有效果)。
如何正确地将其与 cmake 链接以解决此错误?
【问题讨论】:
-
什么MPI2? OpenMPI、MPICH 还是其他? MPI 只是协议。清除构建目录并重新运行 CMake。配置状态是什么?它是否找到提升或缺少任何其他组件?您的 boost 版本是否足够新?
-
感谢@usr1234567 的回复。 MPI2 在这里实现:link。清除和重新运行给出了相同的结果。配置输出为:
-- Build type: NativeRelease -- Boost version: 1.56.0 -- Found the following Boost libraries: -- serialization -- mpi -- thread -- program_options -- regex -- filesystem -- chrono -- Configuring done -- Generating done找不到库正常输出错误吗? -
您是否按照安装说明安装了 MPICH? “2. 安装 mpich2 (>= 1.3.2p1)。”我不认为它是完整的 MPI 实现,它只是一个包装器。
-
是的,我已按照所有步骤进行操作,并且我相信它已正确安装(我已尝试在 3 台不同的机器上进行此安装)。
-
您的操作系统和编译器信息对于调试编译问题是绝对必要的。