我想发布我开发的Linux和Windows的业余爱好应用程序。该应用程序取决于提升(可能还有其他库)。这种应用程序的规范(国际象棋引擎)是仅提供可执行文件和一些辅助文件。

我很难静态地链接库是一个好主意,因此可执行文件将没有任何依赖性。因此,最终用户可以将可执行文件放入目录中并开始使用它。

但是,在网上进行一些研究的同时,我发现了一些有关静态链接库的负面评论,甚至有人认为具有静态链接库的应用程序几乎无法便携,这意味着它只会在我的高度相似系统的系统上运行。

那么静态链接库的利弊是什么?

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

有帮助吗?

解决方案

优点:
没有依赖性。

缺点:
更高的内存使用情况,因为OS不再使用库的共享副本。
如果需要更新图书馆,则需要重建您的应用程序。这对于具有安全修复程序的库非常重要。

当然,更大的便携性问题是缺乏源代码分布。

其他提示

假设静态库“如果目标系统无法实现此依赖性,则您的程序将无法运行。

但是,如果您使用的是动态链接,则用户可以安装另一个版本的库“ A”“使用函数“ C”而不是“ B”,因此可以成功运行。

如果您静态地链接库,除非您添加智能板以检查已链接的库的用户系统,否则您将锁定应用程序以使用库的那些版本,直到更新可执行文件为止。安全孔发生,并发生更新。 (对于国际象棋引擎,可能没有太多问题,但谁知道。)

有了动态链接的库,如果库说X,则在用户系统中无法使用X,您的代码崩溃了,使最终用户想知道。
而对于静态库的情况,所有内容都融合到可执行文件中,因此可能不会发生像上述情况,但是可执行文件将非常笨重。

但是,在动态链接的库中的上述问题可以通过 动态加载.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top