静态库制作和使用
概述
静态库可以认为是一些目标代码的集合,是在可执行程序运行前就已经加入到执行码中,成为执行程序的一部分。
按照习惯,一般以“.a”做为文件后缀名。静态库的命名一般分为三个部分:
- 前缀:lib
- 库名称:自定义即可
- 后缀:.a
所以最终的静态库的名字应该为:libxxx.a
1) 静态库制作
静态库制作
#第一步:将源文件生成对应的目标文件
# 将.c源文件生成对应的.o文件
wuyou@itcast:~/share/2nd/2static_lib$ gcc -c add.c
wuyou@itcast:~/share/2nd/2static_lib$ gcc -c sub.c
wuyou@itcast:~/share/2nd/2static_lib$ gcc -c mul.c
wuyou@itcast:~/share/2nd/2static_lib$ gcc -c div.c
wuyou@itcast:~/share/2nd/2static_lib$ ls *.o
add.o div.o mul.o sub.o
wuyou@itcast:~/share/2nd/2static_lib$
#第二步:使用打包工具ar将准备好的.o文件打包为.a文件 libtest.a
#ar -rcs libtest.a add.o sub.o mul.o div.o
wuyou@itcast:~/share/2nd/2static_lib$ ar -rcs libtest.a add.o sub.o mul.o div.o
wuyou@itcast:~/share/2nd/2static_lib$ ls -l libtest.a
-rw-rw-r-- 1 wuyou wuyou 5274 11月 4 17:54 libtest.a
wuyou@itcast:~/share/2nd/2static_lib$
在使用ar工具是时候需要添加参数:rcs
- r更新
- c创建
- s建立索引
静态库使用
wuyou@itcast:~/share/2nd/3static_test$ gcc test.c -L./ -I./ -ltest -o test
wuyou@itcast:~/share/2nd/3static_test$ ./test
x + y = 18
x - y = 12
x * y = 45
x / y = 5
wuyou@itcast:~/share/2nd/3static_test$
参数说明:
- -L:表示要连接的库所在目录
- -I./: I(大写i) 表示指定头文件的目录为当前目录
- -l(小写L):指定链接时需要的库,去掉前缀和后缀 (libtest.a) test