01.什么是库
- 库文件是计算机上的一类文件,可以简单的把库看成一种代码仓库(二进制),它提供给使用者一些可以直接拿过来的变量、函数或类
- 库是一种特殊的程序,编写库的程序和编写一般的程序区别不大,只是库不可以单独运行,因为库是要提供给别人使用的
- 库文件有两种:一种是静态库,一种是动态库(共享库)。其区别:静态库在程序的链接阶段被复制到了程序中(预处理->编译->汇编->链接);动态库在程序运行的时候由系统动态的加载到内存当中,以供程序调用
- 库的优点:1.代码具有保密性 2.方便部署和发布
02.静态库的制作
命名规则:
Linux:libxxx.a
lib:固定的前缀 是library的缩写
xxx:库的名字,自己起的
.a:固定后缀
静态库的制作过程:
1. gcc获取.o文件(头文件不需要进行.o编辑,在预编译的时候会自动包含到源文件里,)
2. 将.o文件进行打包,使用ar(archive)工具
ar rcs libxxx.a xxx.o xxx.o.......
r:将文件插入到储备文件中
c:建立备存文件
s:索引
例子:有以下几个.c文件组成运算代码 :头文件head.h、主函数main.c、add.c、div.c、mult.c、sub.c
首先用gcc编译成.o文件( main是一个测试的代码 所以不需要进行编译)
<1>gcc -c add.c div.c mult.c sub.c
<2>ar rcs libcalc.a add.o div.o mult.o sub.o
这样简单的静态算数库就制作好了 此时文件中会有一个libcalc.a这个文件
03. 静态库的使用
为了方便理解,重新建立一个文件夹命名为library,具体文件内容如图所示
我们再使用静态库的时候,不仅仅要把库给别人,同时还要把库所依赖的头文件也要分发给别人
gcc main.c -o app -I ./include/ -l calc -L ./lib
将主函数生成一个名为app的可执行程序,其中红色标注的大写I(i) 代表着在利用静态库的时候要从include目录下寻找头文件,小写L代表的是要用到calc这个库,大写L代表的是在lib目录寻找这个库文件,只有这样才可以完成编译,如果嫌麻烦可以直接把文件都放在同一个目录下,这样不需要app后面的命令,但如果这样做,会让文件没有条理性,找文件的时候也比较复杂
总而言之,静态库的使用还是非常简单的