linux静态库和动态库的创建与使用
静态库与动态库的创建与使用
1. 基本概念
静态库:链接时,库与编译生成的 .o 文件一起打包到可执行文件中。 linux / windows 下扩展名分别为:.a / .lib
动态库:链接时,不会打包到可执行文件中, 执行时会动态的加载动态库。 linux / windows 下扩展名分别为:.so / .dll
区别主要体现在:
a、可维护性。
合入更新。合入动态库的更新,只要替换库即可。但合入静态则需要重新链接,生成新的可执行程序,全量更新。
环境依赖。若包含静态库,编译成功后不依赖环境。动态库则存在依赖关系,需要环境中存在对应的动态库。
b、大小
空间利用率。若依赖相同静态库,则存在多份拷贝。
可执行文件大小。静态库文件较大。
c、动态库可以实现进程之间的资源共享,因此也称为共享库。
2. 静态库的创建与使用
静态库本质就是一组 .o 组成的压缩文件,扩展名为 .a / .lib