一 静态库和共享库(动态库)
1 静态库和共享库简介
由于项目比较复杂,代码数量非常庞大,可以把代码打包成库文件,提供库文件和头文件即可。
库文件分为两种:
静态库和共享库(动态库),静态库和共享库都是代码的归档文件。使用静态库时,把静态库的代码复制到目标文件中,导致目标文件比较大;使用共享库时,把函数的地址放到目标文件中。
静态库和共享库的优缺点:
静态库的优点:目标文件独立于库文件,运行速度稍快。缺点:目标文件比较大,不利于代码的修改、扩展和复用。
共享库的优点:目标文件比较小,修改、扩展和复用代码比较方便。缺点:目标文件必须和共享库文件同时存在,代码才能正常运行。运行速度稍慢。
开发多半使用 共享库。
2 静态库的使用
使用静态库的步骤:
2.1 创建静态库(.a)
1 写源程序 add.c 保存退出
2 编译源程序,得到 .o 文件(gcc -c)
3 创建静态库文件:
ar -r libXX.a add.o
注:lib开头 .a结束是静态库的命名规范。XX是库名
创建静态库文件后,还需要提供 .h文件。
2.2 使用静态库
1 写调用源程序 test.c,保存退出
2 编译test.c,只编译不连接(gcc -c)
3 连接 test.o 和静态库文件。
连接方式有三种:
a 直接连接
gcc test.o libXX.a
b 配置环境变量LIBRARY_PATH,把库文件所在路径放入其中,然后:
gcc test.o -lXX
c gcc test.o -lXX -L所在路径 (双L,推荐)
add.h
#ifndef ADD_H_
#define ADD_H_
int add(int,int);
double add2(double,double);
#endif
add.c
int add(int a,int b){
return a+b;
}
double add2(double a,double b){
return a+b;
}
test.c