Linux编程:创建一个只包含两个函数的小型静态函数库

Linux编程:创建一个只包含两个函数的小型静态函数库

库文件的名字总是以lib开头,随后的部分指明这是什么库(如c代表C语言库,m代表数学库)文件名的最后部分以.开始,然后给出库文件的类型:

.a代表传统的静态函数库

.so代表共享函数库

可以通过给出完整的库文件路径名或用-l标志来告诉编译器要搜索的库文件:

$ gcc –o fred fred.c /usr/lib/libm.a 或 $ gcc –o fred fred.c –lm

fred.c 

#include <stdio.h>

void fred(int arg)

{

printf(“fred: you passed %d\n”, arg);

}

bill.c

#include <stdio.h>

void bill(char *arg)

{

printf(“bill: you passed %s\n”, arg);

}

编译以产生要包含在库文件中的目标文件——静态库最简单的形式就是一组处于“准备好使用”状态的目标文件。

$ gcc -c bill.c fred.c

$ ls *.o

bill.o fred.o

-c选项的作用是阻止编译器创建一个完整的程序。如果此时试图创建一个完整的程序将不会成功,因为没有定义main函数。

为该库文件创建一个头文件:

/*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);

}

可以为编译器显式指示指定的目标文件:

$ gcc -c program.c

$ gcc -o program program.o bill.o

$ ./program

bill: we passed Hello World

$

也可以通过ar程序来创建一个库文件:

$ ar crv libfoo.a bill.o fred.o

现在可以在编译器使用的文件列表中添加该库文件以创建程序:

$ gcc -o program program.o libfoo.a

$ ./program

bill: you passed Hello World

$

虽然程序中的头文件包含函数库中所有函数的声明,但这并不会将整个函数库包含在最终程序中。当程序被创建时,它只包含函数库中它实际需要的函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值