此为牛客网Linux C++课程 1.4&1.5 的课程笔记。
0. 关于静态库与动态库
库就是封装好的、可服用的代码,而静态和动态是指链接。
这节课讲的是静态库,是指在链接阶段,会将汇编生成的目标文件.o与引用到的库一起链接打包到可执行文件中,所以称为静态链接。
静态库本质上是很多.o文件的集合,链接的时候这些.o文件与目标文件一起合成一个可执行文件。
1. 静态库命名规则
2. 静态库的制作
演示如下:
一个简易版计算器程序目录如下:
然后执行:
gcc -c add.c div.c mult.c sub.c
用gcc编译成目标文件
然后执行:
ar rcs libcalc.a add.o div.o mult.o sub.o
生成了名为libcalc.a的静态库文件。
3.静态库的使用
首先将刚才涉及到的文件整理一下:
此时编译main.c文件,执行:
gcc main.c -o app
报错,找不到头文件:
在实际开发中,制作好库以后,要把库文件和头文件都发给调用者。
此时需要用到上一节课学的gcc参数:
然后执行:
gcc main.c -o app -I ./include/
用-I参数在include里找头文件。
结果又报错:
找不到库文件,然后使用-L和-l指定库的路径和库的名称,执行:
gcc main.c -o app -I ./include/ -L ./lib -l calc
解释:-L ./lib表示搜索的库的路径,-l calc指定使用的库,这里要注意库的名称要填calc,而不是libcalc.a,指定库名称的时候去掉lib和后缀.a。
运行成功,生成可执行文件app,此后可执行./app执行文件。