一个比较简单的Linux下制作静态库的例子
2009年09月18日 17:44 发布者:f.luo
看书的时候发现个小例子,感觉不错。分享一下,高手就不用来浪费时间了。
Linux下如何把自己写的函数做成静态编译库。
这个例子中,我们创建了一个我们自己的小小的库,该库包含两个函数。而在例子中,我们使用了其中一个函数。这两个函数分别为fred和bill,作用为打印问候语。
首先,为每一个函数各创建一个独立的源程序。建立两个C文件,分别为fred.c和bill.c简单看下面的代码。
第一个:
#include
void fred(int arg)
{
printf(“fred: we passed %d\n”,arg);
}
第二个:
#include
void bill(char *arg)
{
printf(“bill: we passed %s\n", arg);
}
现在可以编译这些函数。使用gcc的-c参数。编译:
$ gcc -c bill.c fred.c
$ ls *.o
bill.o fred.o
头文件为了便于以后调用,编写个头文件,文件名为lib.h:/*
This is lib.h. It declares the functions fred and bill for users
*/
void bill(char *);
void fred(int);
好了,可以写主程序了.主程序调用函数bill()。
#include
#include “lib.h”
int main()
{
bill(Hello World);
exit(0);
}
用到的文件都完成了,下面主要是编译。
网友评论
kendying 2009年09月22日
受教!
受教!
本帖最后由 f.luo 于 2009-9-18 18:12 编辑
现在可以进行进行编译和测试了
$ gcc -c program.c
$ gcc -o program program.o bill.o
$ ./program
bill: we passed Hello World
$
没有错误的话应该会输出
bill:wo passed Hello,World
现在创建和使用库函数
$ ar crv libfoo.a bill.o fred.o
a - bill.o
a - fred.o
现在库函数创建成功,两个目标函数已经添加成功了
继续:
$ ar crv libfoo.a bill.o fred.o
a - bill.o
a - fred.o
现在可以使用创建的库函数进行编译了
删掉原来的program二进制文件
$ gcc -o program program.o libfoo.a
$ ./program
bill: we passed Hello World
$
OK,不出错误的话应该成功了。:)