将Boost库包含在可执行二进制文件中

时间:2020-08-27 21:19:54

标签: c++ boost g++

我在一个安装了Boost的系统上进行开发时遇到了一个问题:

/usr/include
/usr/lib

在将要部署到的系统上,libboost库位于:

/nfs/mount/boost
/nfs/mount/lib

而且我无法改变部署的每个系统,以便在同一位置安装libboost。

有没有一种方法可以

  1. 将libboost包含为二进制可执行文件的一部分,因此不需要从系统lib路径进行加载。
  2. 在尝试加载到libboost时使可执行文件搜索不同的目录吗?

我正在使用g ++ 8

1 个答案:

答案 0 :(得分:-1)

听起来像您需要更复杂的构建环境。

我不确定您在这里是什么意思

  1. 将libboost包含为二进制可执行文件的一部分,从而无需链接

不能跳过链接。如果您尝试避免使用可执行文件分发 .dll / .so文件,则需要避免使用Boost库中需要编译Boost二进制文件的部分(即,此处未列出的部分{{ 3}})。

当然,这种情况并不常见。所以...

  1. 在尝试链接到libboost时使可执行文件搜索不同的目录吗?

这在您扩展时将永远无法可靠地起作用,并且是CI世界中的噩梦。这是包管理器(例如柯南(https://www.boost.org/doc/libs/1_62_0/more/getting_started/windows.html#header-only-libraries)来节省时间的地方。将软件包管理委派给第三方是使代码跨多个环境/平台构建的最可靠方法。

此外,构建可执行文件并进行分发是单独的操作。任何动态链接的库都需要在运行时在系统路径上被发现。