【问题标题】:Error building mpi2 - trouble linking libboost_system构建 mpi2 时出错 - 链接 libboost_system 时出现问题
【发布时间】: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 台不同的机器上进行此安装)。
  • 您的操作系统和编译器信息对于调试编译问题是绝对必要的。

标签: c++ boost cmake mpi


【解决方案1】:

我认为问题可能是 Boost.System 没有在 CMakeLists.txt 中列为要求。

查看https://github.com/uma-pi1/mpi2/blob/master/CMakeLists.txt#L67,似乎应该在find_package(Boost ...) 调用中的chrono 之后立即添加system

【讨论】:

    猜你喜欢
    • 2014-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多