静态库,也称作归档文件(archive),按惯例它们的文件是以.a结尾。
1.创建 sumadd.c文件
#include <stdio.h>
int sumadd(int a,int b)
{
return a+b;
}
创建 sumsub.c文件
#include <stdio.h>
int sumsub(int c,int d)
{
return c-d;
}
编译两个文件
$gcc -c sumadd.c sumsub.c 会产生sumadd.o sumsub.o 两个目标模块
2.创建program.c 调用代码
#include <stdio.h>
int main ()
{
int x = 0;
int y = 0;
x = sumadd(1,2);
y = sumsub(2,1);
printf("1+2=%d,2-1= %d \n",x,y);
return 1;
}
编译,链接
$gcc -c program.c
$gcc -o program program.o sumadd.o sumsub.o
$./program
1+2=3,2-1=1
3.生成静态库.a
$ar crv libtestsum.a sumadd.o sumsub.o
最终生成静态库 libtestsum.a
静态库的一个缺点是,当你同时运行程序并且它们都使用来自同一函数库时,内存中就会有同一函数的多份副本,而且在程序文自身中也有多份同样的副本。这将消耗大量宝贵的内存和磁盘空间。