静态库的制作与使用
1、静态库的命名方式
lib+库名.a,如libtmath.a。
2、如何制作静态库文件
(1)将需要加到静态库的源文件编译为目标文件
(2)将目标文件添加到静态库
(3)使用静态库文件链接目标文件形成可执行文件
例:add.c实现两个数的加减法,mul.c实现两个数的乘除法。tmath.h包含声明add.c和mul.c的相关内容。(为了编译方便,将所有需要加入静态库的文件放到一个文件夹下,不包括主函数文件),此例中add.c等加入库的文件在tmath文件夹下,包含main函数的文件在他的上层位置文件存放。主函数实现在tt1.c中。
(1)当前目录tmath,:gcc -c *.c,将所有源文件编译为目标文件。
(2)将目标文件添加到静态库,ar -r libtmath.a *.o
(3)使用静态库链接目标文件形成可执行文件。gcc -c tt1.c(注意tt1.c中的头文件包含路径),gcc tt1.o -Ltmath -ltmath。相关命令查询见笔记末链接。
(4)使用./a.out执行即可。
Linux ar命令:
命令用于建立或修改备存文件,或是从备存文件中抽取文件。
ar可让您集合许多文件,成为单一的备存文件。在备存文件中,所有成员文件皆保有原来的属性与权限
语法
ar[-dmpqrtx][cfosSuvV][a<成员文件>][b<成员文件>][i<成员文件>][备存文件][成员文件]
参数:
必要参数:
-d 删除备存文件中的成员文件。
-m 变更成员文件在备存文件中的次序。
-p 显示备存文件中的成员文件内容。
-q 将文件附加在备存文件末端。
-r 将文件插入备存文件中。
-t 显示备存文件中所包含的文件。
-x 自备存文件中取出成员文件。
选项参数:
a<成员文件> 将文件插入备存文件中指定的成员文件之后。
b<成员文件> 将文件插入备存文件中指定的成员文件之前。
c 建立备存文件。
f 为避免过长的文件名不兼容于其他系统的ar指令指令,因此可利用此参数,截掉要放入备存文件中过长的成员文件名称。
i<成员文件> 将文件插入备存文件中指定的成员文件之前。
o 保留备存文件中文件的日期。
s 若备存文件中包含了对象模式,可利用此参数建立备存文件的符号表。
S 不产生符号表。
u 只将日期较新文件插入备存文件中。
v 程序执行时显示详细的信息。
V 显示版本信息。
实例
打包文件
[root@w3cschool.cc ~]# ls //显示当前目录文件 a.c b.c d.c install.log qte
anaconda-ks.cfg c.c Desktop [root@w3cschool.cc ~]# ar rv one.bak a.c b.c //打包 a.c b.c文件 ar: 正在创建 one.bak
a - a.c
a - b.c[root@w3cschool.cc ~]#
打包多个文件
[root@w3cschool.cc ~]# ar rv two.bak *.c //打包以.c结尾的文件 ar: 正在创建 two.bak
a - a.c
a - b.c
a - c.c
a - d.c[root@w3cschool.cc ~]#
显示打包文件的内容
[root@w3cschool.cc ~]# ar t two.bak
a.c
b.c
c.c
d.c[root@w3cschool.cc ~]#
删除打包文件的成员文件
[root@w3cschool.cc ~]# ar d two.bak a.c b.c c.c [root@w3cschool.cc ~]# ar t two.bak
d.c
也可以使用man ar命令,查看ar相关帮助
linux命令查询:https://www.runoob.com/linux/linux-command-manual.html
https://www.linuxdaxue.com/linux-commands-manual