1. 创建静态库
d => 从归档文件中删除文件
m[ab] => 在归档文件中移动文件
p => 打印在归档文件中找到的文件
q[f] => 将文件快速追加到归档文件中
r[ab][f][u] => 替换归档文件中已有的文件或加入新文件
s => 作为 ranlib 工作
t => 显示归档文件的内容
x[o] => 从归档文件中分解文件
2. 静态库的创建实例
把 add.o 和 sub.o 这两个文件打包成libbase.a
ar -r libbase.a add.o sub.o
查看静态库中内容
ar -t libbase.a
解压静态库
ar -x libbase.a // 解压所有文件
ar -x libbase.a -o add.o // 只解压 add.o文件
3. 创建及使用静态库的步骤
1)编写源代码
int sub(int a, int b) { return a - b; } int add(int a, int b) { return a + b; } int main() { printf("10 + 20 = %d\n", add(10, 20)); printf("20 - 10 = %d\n", sub(20, 10)); return 0; }
2)生成.o文件
gcc -c --static add.c sub.c
说明: static选项向编译器指明 如果操作系统支持动态链接,该选项将阻止其生成动态链接库。一般而言, 加static生成的文件会较大。
3)生成静态库文件
ar -r libbase.a add.o sub.o
说明: 生成静态库时,名称尽量以lib开头
ar -t libbase.a 查看静态库中包含的内容
4)使用静态库文件
gcc -c main.c -o main.o #生成.o文件
gcc main.o libbase.a -o main #生成二进制程序
或
gcc main.o -L. -lbase -o main # 生成二进制程序
./main # 运行二进制程序
说明:-Ldir 选项的含义是在 dir 这个目录中查找要链接的库文件
-lname 是指链接库名为 libname.a 的文件
如上内容, 如有错误, 欢迎指正。