【问题标题】:undefined reference to 'boost::system::system_category()'未定义对'boost::system::system_category()'的引用
【发布时间】:2017-02-25 00:32:35
【问题描述】:

我正在尝试编译一个 library,它具有 boost 作为依赖项。在使用 cmake 编译时,我收到以下错误:

../libdasp/libdasp.so:错误:未定义的引用 'boost::system::system_category()' ../libdasp/libdasp.so: 错误: 对'boost::system::generic_category()'的未定义引用

我已经在我的 ubuntu 12.04 机器上使用this page 上的说明手动安装了 boost 1.62。为了避免任何与路径相关的不一致,我使用 apt 删除了默认的 libboost-dev (1.48) 并将新的 boost 安装到 /usr。

我在 stackoverflow 上寻找过类似的问题,他们要求添加 -lboost_system 或类似的东西。但是我不明白当其余文件使用同一个库成功编译时,我怎么能强制 cmake 查找这个特定的库(表明我的 boost 安装没有缺陷)。给出错误的 CMakeLists 文件是 here

我执行了以下命令

定位 boost_system

输出是

/usr/lib/libboost_system.a

/usr/lib/libboost_system.so

/usr/lib/libboost_system.so.1.46.1

任何答案或指示都会非常有帮助。

【问题讨论】:

    标签: c++ ubuntu boost


    【解决方案1】:

    尝试:

    set(BOOST_ROOT <where you built boost>)
    
    find_package(Boost COMPONENTS program_options signals thread system)
    find_package(Threads)
    

    ...

    target_link_libraries(target ${Boost_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
    target_include_directories(target PUBLIC SYSTEM ${Boost_INCLUDE_DIRS})
    

    删除这些:

    boost_signals
    boost_thread
    boost_program_options
    boost_system
    pthread
    

    此处的文档:https://cmake.org/cmake/help/v3.0/module/FindBoost.html

    【讨论】:

      猜你喜欢
      • 2015-04-09
      • 2013-10-19
      • 1970-01-01
      • 2012-06-30
      • 2021-03-30
      • 1970-01-01
      • 2019-07-05
      • 2016-05-26
      • 2012-11-08
      相关资源
      最近更新 更多