红联Linux门户
Linux帮助

简介Linux静态库知识

发布时间:2011-06-29 15:30:56来源:CSDN作者:linux使用者

这里将介绍Linux静态库的编写和使用问题的解决方法,在这里拿出来和大家分享一下。


1、概述

静态库文件的扩展名一般为.a,其编写步骤很简单。

⑴编写函数代码

⑵编译生成各目标文件

⑶用ar文件对目标文件归档,生成静态库文件。

注意归档文件名必须以lib打头。


使用要点:

⑴在gcc 的-I参数后加上静态库头文件的路径。

⑵在gcc 的-L参数后加上库文件所在目录

⑶在gcc 的-l参数后加上库文件名,但是要去掉lib和.a扩展名。

比如库文件名是libtest.a 那么参数就是 -l test


2、编写最简单的静态库文件

编写如下两个文件,注意放在同一目录中

myalib.h//静态库头文件

myalib.c//静态库实现文件

//myalib.h 文件的内容

void test();

//myalib.c 文件的内容

#inlcude <stdio.h>
void test()
{
printf("test\n");
}


3、制作库文件

⑴生成目标文件

gcc -c myalib.c

执行完后会生成一个myalib.o文件

⑵用ar命令归档,格式为ar -rc <生成的档案文件名> <.o文件名列表>

再次提醒,归档文件名一定要以lib打头, .a结尾。

ar -rc libtest.a myalib.o

执行完后会生成一个libtest.a文件


4、使用库文件

⑴编写一个测试程序main.c,内容为

//main.c 测试静态库调用的程序

#include "myalib.h"//要把函数的头文件包含进来,否则编译时会报错

int main(int argc,char* argv[])
{
test();
return 0;
}

⑵编译目标文件,注意要把静态库头文件的路径加到-I参数里面

gcc -I /root/exercise -o main.o -c main.c

现在生成了一个main.o文件

⑶生成可执行文件,注意要把静态库文件的路径加到-L参数里面,

把库文件名(去掉打头的lib和结尾的.a)加到-l参数后面。如下面所示

gcc -o main -L/root/exercisemain.o -ltest

此时就会生成一个名为main的可执行文件

另外,注意- l参数好象应该加到输入文件名的后面,否则会报错。

比如gcc -o main -L/root/exercise-ltest main.o就会提示

main.o(.text+0x11): In function `main':
: undefined reference to `test'
collect2: ld returned 1 exit status

原因我还不清楚:-)

⑷执行可执行文件查看效果

执行./main,输出

test

说明执行成功。


以上就是Linux静态库的编写和使用的简介。