一,静态库与动态库的区别
静态库的优缺点
(1)编译时把静态库中的相关代码复制到可执行文件中,运行时不需要链接库
(2)程序运行时无需加载库,运行速度快(优点)。
(3)占用更多的磁盘和内存空间,静态库升级后,程序需要重新编译,库升级不方便(缺点)
动态库的优缺点
(1)编译时仅记录使用哪个共享库(动态库)中的哪个符号(函数),不复制共享库中的相关代码,运行时加载共享库
(2)程序不包含库中的代码,代码尺寸小(优点)
(3)库升级方便,无需重新编译(优点)
(4)使用更广泛
二,静态库与动态库的创建
静态库的创建
1、编写源代码
2、将源代码编译生成相对应的.o文件
3,静态库的命名规范lib静态库名.a
ar :库文件维护程序的名称
c:创建一个库,不管是否存在,都将创建
r:在库中插入模块
s:创建目标文件索引,这个在创建较大的库的时候能加快时间编译
4,编译
5,运行
动态库的创建
1、编写源代码
2、-fPIC 生成与位置无关代码,可以在任何位置执行
3,创建共享库
共享库的命名规范
lib库名.so.版本号(数字)
4、创建软链接
创建软链接的目的时为了能够让我们的编译器在编译的时候找到共享库
5、链接共享库
6、运行
7,将共享库复制到系统库路径下 /usr/lib