我已经下载了boost,它是一个包含数千个文件的庞大目录。我有gcc 3.4.5 - 一个旧版本与现在的版本进行比较,但它与我一直在使用的旧程序一起运行。我正在考虑通过安装boost来为我的程序提供更多优势,特别是shared_ptr thingy似乎是一个很好的补充。我的问题是安装boost会导致我的程序不再运行,或者升级库文件是一个完全独立的对象吗?
答案 0 :(得分:0)
我不完全理解你的问题。你在谈论分发二进制文件吗?您可以静态和动态地链接提升。如果你静态地链接它们,你的二进制文件的大小会变得更大,但你不依赖于boost系统库。这是使用Windows执行此操作的典型方法。对于基于Linux的系统,boost通常与系统库动态链接,通常它非常可靠。但是,某些模块(如filesystem或program_options)会记录不兼容的API更改。
或者您在谈论与古老编译器版本的兼容性? Boost与这样的旧GCC不是100%兼容,但核心功能应该有效。
答案 1 :(得分:0)
如果我理解正确的问题,并且无视编译器版本问题,答案是肯定的。 Boost库不是仅限于标头的,通常是开箱即用的一组动态库(即一组.dll,.so或.dylib文件,具体取决于平台)。
在以下情况下,构建和安装较新版本的boost可能会破坏现有的已安装程序:
如果您的系统上已经安装了程序,那么在运行时链接现有版本的某些非标头升级库
如果较新的版本有接口更改或细微的实现更改
然后您安装的较新的升级库可能会使您现有的程序混乱(无法运行或出现细微的错误,具体取决于更精确的情况详情)。