我对此很陌生,不明白为什么当有
dynamic linking
时我应该使用 static linking
。
dynamic linking
会减小程序文件的大小,但如果它是custom dynamic library
,它仍然必须包含在安装程序中。所以,应用程序文件夹的最终大小不会改变。dynamic loading
期间,您可以通过系统调用或Windows注册表找到位置。但是dynamic linking
期间该怎么做呢?请帮助我,因为这两点我根本不明白为什么需要
dynamic linking
(我可以理解需要dynamic loading
)。
动态链接不仅可以减少最终可执行文件的文件大小,还可以减少应用程序的内存占用。如果您有两个应用程序,两者都是静态链接的并且都使用公共共享库,那么同一共享库的两个副本将驻留在内存中,这是一种浪费。一般来说,您总是希望动态链接能够生成最小且最有效的代码。
那么什么时候适合使用静态链接呢?如果您不确定目标计算机的操作系统版本,静态链接您的应用程序可以确保您的应用程序运行,无论其版本如何。此外,安全应用程序(例如金融应用程序)也是一个很好的候选者,因为它通过为每个进程提供独立的环境来将一个进程与另一个进程隔离,并且任何应用程序之间都不会共享代码。此外,静态链接提供了更快的执行速度,因为我们在编译时复制了整个库内容。因此,我们不必在运行时运行未解析符号的查询。因此,我们可以比动态链接的程序更快地执行静态链接的程序。