一、首先,为两个函数分别创建各自的源文件(将他们分别命名为fred.c和bill.c).下面第一个源文件:
#include "stdio.h"
void fred(int arg)
{
printf("fred: we passed %d\n",arg);
}
下面是第二个源文件:
#include "stdio.h"
void bill(char *arg)
{
printf("bill:we passed %s\n",arg);
}
二、分别编译这些函数以产生要包含在库文件中的目标文件。
$ gcc -c bill.c fred.c
三、现在编写一个调用bill函数的程序。首先为你的库文件创建一个头文件。这个头文件将声明你的库文件中的函数,他应该被希望所有希望使用你的库文件的应用程序所包含。
/*This is lib.h It declares the functions fred and bill for users */
void bill(char *);
void fred(int);
四、调用程序(program.c)非常简单,它包含库的头文件并且调用库中的一个函数。
#include "lib.h"
int main()
{
bill("hello world");
exit(0);
}
五、现在你可以编译并测试这个程序了。你暂时为编译器显示指定目标文件,然后要求编译器编译你的文件并将其与先前编译好的目标模块bill.o链接。
$ gcc -c program.c
$ gcc -o program program.o bill.o
$ ./program
bill : we passed hello word
$
六、现在,你将创建并使用一个库文件。使用ar 程序创建一个归档文件并将你的目标文件添加进去。
$ ar crv libfoo.a bill.o fred.o
a - bill.o
a - fred.o
七、库文件创建好了,两个目标文件都添加进去了,要想成功使用函数库,你还需要为函数库生成一个内容表。可以用ranlib 命令来完成这一工作。
$ ranlib libfoo.a
这个函数库就可以使用了,你可以在编译器使用的文件列表中添加该库文件以创建你的程序
$ gcc -o program program.o libfoo.a
./proram
bill : we passed hello world
$
你也可以使用-l选项来访问函数库,但其未保存在标准位置,所以必须使用-L选项来告诉编译器在何处可以找到他,
$ gcc -o program program.o -L. -lfoo