0

我已经下载了 boost,它是一个包含数千个文件的庞大目录。我有 gcc 3.4.5 - 与现在的旧版本相比,它与我一直使用的旧程序一起运行。我正在考虑通过安装 boost 来让我的程序更有优势,尤其是 shared_ptr 似乎是一个很好的补充。我的问题是安装 boost 可能会导致我的程序不再运行或者 boost 库文件是一个完全独立的对象?

4

2 回答 2

0

我不完全理解你的问题。您是在谈论分发二进制文件吗?您可以静态和动态链接 boost。如果你静态链接它们,你的二进制文件的大小会变大一点,但你不依赖于 boost 系统库。这是使用 Windows 执行此操作的典型方法。对于基于 Linux 的系统,boost 通常与系统库动态链接,并且通常非常可靠。然而,像 filesystem 或 program_options 这样的一些模块有不兼容的 API 更改的记录。

还是您在谈论与您的古老编译器版本的兼容性?Boost 不是 100% 兼容这么旧的 GCC,但核心功能应该可以工作。

于 2013-10-12T03:55:37.123 回答
0

如果我正确理解了这个问题,并且忽略了编译器版本问题,那么答案是肯定的。非标头的 Boost 库通常作为一组动态库(即一组 .dll、.so 或 .dylib 文件,具体取决于平台)开箱即用地构建。

因此,在以下情况下,构建和安装更新版本的 boost 可能会弄乱您现有的已安装程序:

  • 如果您的系统上已经安装了程序,则在运行时链接到某个非标头 boost 库的现有版本

  • 以及新版本是否有接口更改或细微的实现更改

那么您现有的程序可能会被您安装的较新的 boost 库弄乱(无法运行或出现细微的错误,具体取决于更精确的情况细节)。

于 2013-10-12T13:01:36.653 回答