C静态库的生成
一个判断加法对错的函数 add.c
int add(int x, int y, int z)
{
if (z == x + y) return 1;
return 0;
}
一个头文件add.h
int add(int x, int y, int z);
生成add.o文件
gcc -c add.c
注意此处需要root权限,否则会有如下报错:
Assembler messages:
Fatal error: can't create add.o: Permission denied
生成libadd.a静态库
ar cr libadd.a add.o
现在可以把add.h和libadd.a提供给客户。
C静态库的调用测试
新建一个工程,写一个main.c,将.h文件和main.c函数放到同一目录下。(.a文件后续会提到)
#include<stdio.h>
#include "add.h"
int main() {
int a = 1, b = 2, c = 4;
int flag = add(a, b, c)
printf("\nFlag is %d.\n", flag);
return flag;
}
编译main.c
gcc main.c -o main -ladd
此处会报错
/usr/bin/ld: cannot find -ladd: No such file or directory
collect2: error: ld returned 1 exit status
解决办法:将静态库.a文件拷贝到系统库目录/usr/lib
sudo cp libadd.a /usr/lib
执行成功
打印
Flag is 0.