在 Ubuntu 下使用 gcc 生成静态库(.a 文件),一般步骤如下:
假设有两个源文件:
// add.c
int add(int a, int b) {
return a + b;
}
// sub.c
int sub(int a, int b) {
return a - b;
}
使用 -c 参数只编译不链接:
gcc -c add.c -o add.o
gcc -c sub.c -o sub.o
ar 生成静态库静态库使用 ar(archive)工具创建:
ar rcs libmymath.a add.o sub.o
说明:
r:插入或替换目标文件c:创建库(不警告)s:生成索引(加速链接)生成文件:libmymath.a
写一个测试程序:
// main.c
#include <stdio.h>
int add(int, int);
int sub(int, int);
int main() {
printf("3+2=%d\n", add(3, 2));
printf("3-2=%d\n", sub(3, 2));
return 0;
}
编译并链接静态库:
gcc main.c -L. -lmymath -o main
参数说明:
-L.:在当前目录找库-lmymath:链接 libmymath.a运行:
./main
ar t libmymath.a
或查看符号:
nm libmymath.a
.alibxxx.a如果你需要 Makefile 写法 或 与动态库对比,也可以告诉我。