静态链接图书馆的利弊是什么?

Mat*_*agé 11 linux linker static-libraries static-linking

我想发布一个我开发的应用程序,作为Linux和Windows的业余爱好.此应用程序依赖于boost(以及可能的其他库).这种应用程序(国际象棋引擎)的规范是仅提供可执行文件和可能的一些帮助文件.

我认为静态链接库是个好主意,因此可执行文件不会有任何依赖.因此,最终用户可以将可执行文件放在目录中并开始使用它.

然而,在网上进行一些研究时,我发现了一些关于静态链接库的负面评论,有些甚至认为具有静态链接库的应用程序几乎不可移植,这意味着它只能在我的高度相似系统的系统上运行.

那么静态链接库的优点和缺点是什么?

我已经知道可执行文件会更大.但我不明白为什么它会使我的应用程序不那么便携.

Pow*_*ord 5

优点:
没有依赖.

缺点:
内存使用率较高,因为操作系统无法再使用库的共享副本.
如果需要更新库,则需要重新构建应用程序.这对于具有安全修复程序的库来说非常重要.

当然,可移植性的一个更大问题是缺乏源代码分发.

  • 也许应该将“没有依赖项”更改为“没有额外的运行时依赖项” (2认同)