Linux make 无法链接到 Boost 非标头库

Posted

技术标签:

【中文标题】Linux make 无法链接到 Boost 非标头库【英文标题】:Linux make can't link against Boost non-header only libraries 【发布时间】:2011-08-08 17:10:36 【问题描述】:

我成功切换到 Linux,我真的开始爱上它了。除了我无法将代码链接到仅非标头的 Boost 库。

我已采取的步骤:

    在终端运行 sudo apt-get install libboost.*-dev 以安装 Boost 库 让 CMake 生成我的 make 文件并找到 Boost 库,就像我在 Windows 上所做的那样。 运行make进行编译。

相同的代码在 Windows 下使用 Microsoft Visual C++ 编译和链接良好。

更多信息

Console Output Source

我还需要做什么?

【问题讨论】:

两个链接都已损坏 (404)。你能以某种方式补救吗? 【参考方案1】:

从您的输出和 CMakeFiles 来看,您似乎没有将代码链接到 Boost 文件系统库。

也就是说,

target_link_libraries(RCMeta $Boost_FILESYSTEM_LIBRARY $Boost_REGEX_LIBRARY)

注意:我可能为该库设置了错误的变量名,您可能需要仔细检查它。

您也可以使用通用的$Boost_LIBRARIES 变量,

target_link_libraries(RCMeta $Boost_LIBRARIES)

用于您的 RCMeta 库。

【讨论】:

我理解你是否正确,我必须将 RCMeta(静态库)链接到 boost 而不是可执行文件? @Mythli:我认为不可能编译/链接库。 几乎像你说的那样工作。学到了新东西(&L)。非常感谢! "CMakeFiles" 是什么意思?你的意思是“CMake 文件” 吗?还是“CMakeLists.txt”?还是别的什么?

以上是关于Linux make 无法链接到 Boost 非标头库的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 CMake 自动链接 boost 库

使用 boost::make_shared 创建矢量元素无法正常工作

BOOST库c ++的问题

Linux C++ 将 Boost 编译到我的程序中

如何对地图使用 boost::serialize::make_binary_object

找不到 boost 库