【问题标题】:Can boost lib built on windows with msvc be used in a linux program可以在linux程序中使用使用msvc在windows上构建的boost lib吗
【发布时间】: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


【解决方案1】:

除非明确支持,否则您通常不能在编译器之间混用和匹配。在这种情况下,它是非常不支持的。

【讨论】:

  • 即使 Windows 上的 gcc 和 Linux 上的 gcc 版本相同,也无法在操作系统之间混合和匹配生成的二进制文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多