一:库文件类型
1:.a代表传统的静态文件库
<1>静态库的实验
假设有三个文件fred.c、bill.c和program.c.
fred.c
#include<stdio.h>
void fred(int arg)
{
printf("fred:you passed %d\n",arg);
}
bill.c
#include<stdio.h>
void bill(char 8arg)
{
printf("bill:you passed %s\n",arg);
}
program.c
#include"lib.h"
int main()
{
bill("hello world!");
return 0;
}
其中的lib.h为
void bill(char *);
void fred(int);
fred.c、bill.c和program.c经过编译后生成fred.o、bill.o和program.o.可以用ar(archive)将bill.o和fred.o归为静态库:
ar crv libfoo.a bill.o fred.o
然后就可以将program.c连接成可执行文件:
$gcc –o program prgram.o libfoo.a
也可以用-l选项来访问我们的库函数,但是因为其未保存在标准位置,所以我们必须用-L选项只是编译器在何处可以找到它,如下所示
$gcc –o program program.o –L. –lfoo
-L.选项只是编译器在当前目录(.)中查找函数库。-lfoo选项只是编译器使用名为libfoo.a的函数库。
2:.so代表共享函数库