1.概述
库文件,本质上是可执行代码的二进制形式,可被操作系统载入内存执行
我们可以理解为是一种储存了一定函数的文件夹可以供我们调用
如我们编写c语言程序时#include<stdio.h>的stdio即是库文件接口(即告诉我们库文件的用法), 它包含了输入输出函数
库文件有系统自带的,也可以我们自行制作
特别注意linux和windows是不同操作系统,二者库的二进制是不兼容的
2.库文件的分类
库文件分为静态库和动态库两种
二者的不同点在于代码被载入的时刻
静态库是在文件执行前将代码载入
动态库在执行过程中使用库文件
静态库后缀为.a
动态库后缀为.so
3.静态库和动态库的区别
(1)效率:静态库储存在计算机固定的地址便于调用,所以在执行时静态库效率要高于动态库
(2)内存大小:静态库编译完后二进制占内存很大,不运行时很占内存
(3)部署:因为静态库内容是执行前载入,所以在执行过程中系统已知静态库全部内容,所以静态库相对便于部署
(4)升级:动态库作为编写的库具有很高的灵活性,便于升级
4.静态库的制作:
静态库的命名规范是前缀为lib紧跟库名后加.a后缀结尾
步骤:
(1)通过源文件编译为.o
(2)通过ar命令转换为.a文件,即生成库文件
ar命令用法
d:从库中删除成员文件
r:在库中加入成员文件;若存在,则替换
c:创建一个库
s:强制重新生成符号表
t:查看所包含的文件
例:首先用vim写一个源文件
将其编译转化为.o文件
通过ar变为库文件
如果需要使用,还需要生成对应的头文件