【发布时间】:2017-10-07 20:53:40
【问题描述】:
我在 Windows 上从源代码构建了 boost。我可以在 windows 上用它编译。
当我想在 linux 中编译时:
找不到请求的 Boost 库。
加速版本:1.65.1
Boost 包含路径:pathtoproject/deps/boost
找不到以下 Boost 库:
boost_system未找到任何 Boost 库。您可能需要设置 BOOST_LIBRARYDIR 到包含 Boost 库的目录或 BOOST_ROOT 到 Boost 的位置。
所以我设置了 findboost 调试标志来理解为什么要使用
set(Boost_DEBUG 1)
在 CMake 中。我明白了:
Boost_FOUND = 1
还有
搜索 SYSTEM_LIBRARY_RELEASE:boost_system-gcc54-mt-1_65_1;boost_system-gcc54-mt;boost_system-mt-1_65_1;boost_system-mt;boost_system
这意味着 cmake 正在寻找名为“gcc54”的库。
但我的库被命名为“vc141”(msvc)。
那么它可以工作吗?或者我需要 2 个增强版本才能在两个系统上工作。
【问题讨论】:
-
可以在 linux 程序中使用在 windows 上构建的带有 msvc 的 lib 不是。使用 wine 可能有点可能,但我只会在 linux 上重新编译。
-
@drescherjm 谢谢。唯一干净的解决方案是在 linux 上再次构建 boost ?
-
是的,而且由于您已经在代码中使用 CMake,因此该过程应该更简单。
-
请注意,在 linux 上构建 boost 通常会生成只能在特定 linux 风格上安全使用的文件。因此,可能有必要为您想要支持的每个 linux 发行版一遍又一遍地构建它。或者,您可以使用一些使用系统包管理器安装的预编译 boost。
标签: c++ linux windows boost cmake