c++ - 包含带有可执行二进制文件的 Boost 库
问题描述
我有一个问题,我正在一个安装了 Boost 的系统上进行开发:
/usr/include
/usr/lib
在我将部署它的系统上,libboost 库位于:
/nfs/mount/boost
/nfs/mount/lib
而且我无法更改我部署的每个系统以在同一个地方安装 libboost。
有没有办法:
- 包括 libboost 作为二进制可执行文件的一部分,这样就不需要从系统 lib 路径加载。
- 尝试加载到 libboost 时让可执行文件搜索不同的目录?
我正在使用 g++ 8
解决方案
听起来您需要一个更复杂的构建环境。
我不确定你在这里的意思:
- 包括 libboost 作为二进制可执行文件的一部分,这样就不需要链接
链接不是您可以跳过的。如果您试图避免将.dll/ .so 文件与可执行文件一起分发,则需要避免使用需要编译 boost 二进制文件的 boost 库部分(即此处未列出的那些https://www.boost.org /doc/libs/1_62_0/more/getting_started/windows.html#header-only-libraries)。
当然,这种情况并不常见。所以...
- 尝试链接到 libboost 时使可执行文件搜索不同的目录?
随着您的扩展,这永远不会可靠地工作,并且是 CI 世界的噩梦。这就是 conan ( https://conan.io/ ) 等包管理器来拯救这一天的地方。将包管理委托给第三方是让您的代码跨多个环境/平台构建的最可靠方法。
此外,构建可执行文件和分发它是单独的操作。任何动态链接的库都需要在运行时在系统路径上被发现。
推荐阅读
- python - 无法分配“9”:“Characterweapons.weaponid”必须是“Weapons”实例
- php - Laravel(5.6)最后一条消息的雄辩顺序
- r - 使用 purrr 迭代时间序列数据
- javascript - 调试模式下的 Vue 反应性
- php - PHP/Wordpress 如何从数组中获取键/索引值
- java - 从 .key 和 .cer 文件实例化 java.security 类 PrivateKey 和 X509Certificate
- python - Colorgram:从每个元素中删除 Rgb
- html - 在 HERE 地图上设置块
- ruby - 在 Scala 中寻找“整齐的数字”
- javascript - Navigo JS 路由器 - 重复路由问题