动态链接库(共享库)、静态链接库 小杂烩

来源:互联网 发布:申根签证截止日期 知乎 编辑:程序博客网 时间:2024/05/17 01:19
动态链接库(共享库)和静态链接库是什么?


Windows系统上,动态库.dll,静态库.lib,

Linux系统上,动态库.so,静态库.a,

Mac系统上,动态库.dylib,静态库.a。


1、动态链接就是把调用函数所在的DLL和调用函数在文件中的位置等信息链接进主程序,程序运行的时候再从DLL中寻找相应函数代码,因此需要相应DLL文件的支持。 
2、静态链接库是把LIB文件中用到的函数代码直接链接进主程序,程序运行时不再需要其它库文件。

动态链接库和静态链接库都是共享代码的方式,如果采用静态链接库,LIB中的指令全部被直接包含在最终生成的 EXE 文件中。但是若使用DLL,该DLL不必被包含在最终EXE文件中,EXE文件执行时可以“动态”引用和卸载这个与EXE独立的DLL文件。

区别:
动态链接库中可以再包含其它动态或静态链接库。
静态链接库中不能再包含其它动态或者静态链接库。

使用及发布:
静态链接库,效率高,发布简单,但可执行程序较大
动态链接库,以Windows系统为例,相关联的库以DLL的形式引用,发布不方便(需要将每一个DLL都添加到安装包中),但可执行程序较小,而且共享库的一个好处是可以动态加载,也就是说,如果涉及到软件升级,那么简单的替换掉相应的DLL就行,不需要重新安装整个程序。

各有优劣,具体情况具体分析
0 0
原创粉丝点击