1. 引言
动态库和静态库是常用的C++函数内部封装方式,有必要对其有一个深入的了解。
2. 动态库与静态库的概念
C++程序编译分** 预编译** -> 编译 ->汇编 ->链接这几部组成,其中链接时做的就是将目标文件与所需的附加目标文件链接,生成可执行文件。动态与静态的区别主要就在于库链接时候的状态,具体差别如下:
- 静态库: 在链接的时候,会和汇编文件一起打包生成一个可执行文件,成为程序的一部分。
- 动态库:动态库在编译的时候不会有任何的变化,只有在程序运行时才会被加载到,它与执行文件是分开的,只是执行问价在某个时候调用了它。
3. 特性对比
静态库优点:
- 可执行文件的依赖比较少,不需要额外条件依赖问价。
- 编译阶段完成链接,代码的装载速度快。
- 在Windows下以.lib的格式存储,在Linux下以.a的格式存储。
静态库缺点:
- 执行文件会变大
- 升级不方便,每次都需要重新的编译。
动态库优点:
- 可以实现多个进程之间的资源的共享。
- 升级时较为简单不需要重新编译
- Windows下以.lib和.dll文件存储,Linux下以.so格式存储。
动态库缺点:
- 运行期间加载,会减慢代码执行速度。<