GCC静态库的使用

编写源代码

  • add.c
int add(int x, int y) {
    return x + y;
}
  • sub.c
int sub(int x, int y) {
    return x - y;
}

生成.o文件

gcc -c -static add.c -o add.o
gcc -c -static sub.c -o sub.o

打包到libtools.a

ar -r libtools.a add.o
ar -r libtools.a sub.o

也可使用更简单的方式

ar -r libtools.a add.o sub.o

静态库的名称,最好以lib开头

使用libtools.a静态库

  • main.c
#include <stdio.h>

int add(int x, int y);
int sub(int x, int y);

int main() {
    printf("5+2=%d\n", add(5, 2));
    printf("5-2=%d\n", sub(5, 2));
    return 0;
}
  • 生成main.o文件
gcc -c main.c -o main.o
  • 链接成为可执行文件
gcc main.o libtools.a -o main
或者
gcc main.o -o main -L. -ltools
  • 运行main文件
./main
结果
5+2=7
5-2=3

ar命令

选项 描述
-d 从.a文件中删除.o文件,如:ar -d libtools.a add.o
-r 添加.o文件到.a文件中,如:ar -r libtools.a add.o
-t 显示.a文件中的内容,如:ar -t libtools.a
-x 解压.a文件,如:ar -x libtools.a