【问题标题】:Compile with boost to use whatever boost version is available?使用 boost 编译以使用任何可用的 boost 版本?
【发布时间】:2014-03-11 15:23:11
【问题描述】:

我在 ubuntu 12.04 上编译了一个使用 boost 的 Linux 包,在这个系统上我有 boost 1.46。我试图在另一个系统上运行编译后的版本,它抱怨它找不到 libboost_system.so.1.46.1。该系统已安装 boost 1.49。如何编译以便程序使用存在的任何版本的引导而不是开发机器上的特定版本。

【问题讨论】:

  • 一个选项可能是针对 Boost 进行静态链接,而不是您当前的动态链接设置。不知道是不是所有的 Boost 库都支持这个。
  • 您正在使用哪些编译器/链接器选项?
  • 不同的boost 版本有不同的二进制接口。除非极度手帕,否则你不能这样做。
  • 按照 Jason R 的建议,静态链接 boost 库是处理这个问题的正确方法。

标签: c++ boost compilation


【解决方案1】:

您不能期望您的程序可以使用不同版本的库。

有/不同/版本的事实意味着它们/不一样/。

如前所述,要么

  • 静态链接到您的特定版本,或
  • 您可以发送共享库(只要将它们放在应用程序特定的位置并确保在运行时找到它们)。顺便说一下,请参阅此处的第二个示例:How to compile boost async_client.cpp 以了解使用自定义库的相关链接器选项(它假定在运行时使用相同的位置 (rpath)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-25
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    • 1970-01-01
    • 2013-04-27
    • 1970-01-01
    相关资源
    最近更新 更多