动态链接库与静态连接库的区别
两种链接库都是采用共享代码的方式。但是静态链接库中的指令会全部直接包含在最终生成的可执行文件中,而动态链接库中的指令则不必包含在可执行文件中。可执行文件在运行过程中会动态的引用和卸载动态链接库。
此外,静态链接库不能在包含其他的任何链接库,而动态链接库中则可以继续包含其他的链接库。
静态链接库是一个或者多个目标文件(.o
或者.obj
)的打包结果,在项目使用静态链接库的时候,静态链接库需要参与编译,在可执行文件编译完成后,静态链接库不需要与可执行文件一起发布。
动态链接库是共享函数库的可执行文件,可以在多个应用之间共享,在内存中只会存在一份副本。所以相较静态链接库,动态链接库更加节省内存,交换操作也更少,应用的升级也更加方便。但由于动态链接库不参与可执行文件的编译,所以动态链接库文件需要与可执行文件一起发布。如果动态链接库在使用者的机器上已经存在,那么就不需要与可执行文件一起发布了。
所以在选择链接库的时候,推荐尽量选择动态链接库使用。