【问题标题】:Why CMake cannot find my Boost libraries on Ubuntu 18.04?为什么 CMake 在 Ubuntu 18.04 上找不到我的 Boost 库?
【发布时间】:2020-03-01 22:45:12
【问题描述】:

这让我发疯了。在我的CMakeLists.txt 我有:

find_package(Boost 1.63.0 REQUIRED SYSTEM)

结果:


[0/1] Re-running CMake...
Build type: Release
CMake Error at /usr/share/cmake-3.10/Modules/FindBoost.cmake:1947 (message):
  Unable to find the requested Boost libraries.

  Boost version: 1.65.1

  Boost include path: /usr/include

  Could not find the following Boost libraries:

          boost_system

但是:

$ locate libboost_system
/usr/lib/x86_64-linux-gnu/libboost_system.a
/usr/lib/x86_64-linux-gnu/libboost_system.so
/usr/lib/x86_64-linux-gnu/libboost_system.so.1.65.1

还有:

$ sudo apt install libboost-all-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
libboost-all-dev is already the newest version (1.65.1.0ubuntu1).

我之前使用过自编译的1.63.0,但是我已经删除了/usr/local/lib/usr/local/include中的所有文件。也许它仍然以某种方式困扰着这里..?

如果我发现像这样的 Boost(无系统):

find_package(Boost 1.63.0 REQUIRED)

..然后配置成功,但不会链接到${Boost_SYSTEM_LIBRARY}

/usr/bin/ld: src/app/CMakeFiles/app.dir/application.cpp.o: undefined reference to symbol '_ZN5boost6system15system_categoryEv'
//usr/lib/x86_64-linux-gnu/libboost_system.so.1.65.1: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

【问题讨论】:

    标签: c++ linux boost cmake ubuntu-18.04


    【解决方案1】:

    问题是你应该要求system 而不是SYSTEM,即使它抱怨在使用SYSTEM 时也缺少boost_system。我发现这有点令人困惑:

    find_package(Boost 1.63.0 REQUIRED system)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-12
      • 2018-10-22
      • 1970-01-01
      • 2012-12-29
      • 2011-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多