制作静态链接库并使用

来源:互联网 发布:北理工网络教育 编辑:程序博客网 时间:2024/06/03 03:18

1、制作静态链接库
第一步:demo.c demo.h

/* demo.c */#include <stdio.h>void func1(void){    printf("func1 in demo.c.\n");}int func2(int a,int b){    printf("func2 in demo.c.\n");    return a+b;}/*demo.h*/void func1(void);int func2(int a, int b);

第二步:制作静态库

gcc -c demo.c -o demo.car -rc libdemo.a demo.o 

使用gcc -c 只编译不连接,生成.o文件。然后使用ar工具打包成.a归档文件。库名不能随便乱起,一般是lib+库名称,后缀名是.a表示一个归档文件。

第三步:制作出静态库后,发布时需要发布.a文件和.h文件。

2、使用静态库
把.a文件和.h文件都放在需要引用的文件夹下。

/* test.c */#include "demo.h"#include <stdio.h>int main(void){    func1();    int a = func2(4, 5);    printf("a = %d.\n",a);    return 0;}

编译:

gcc test.c -o test -ldemo -L.

当使用-lxxx时,链接器试图在默认的链接库路径去寻找libxxx.a文件,但是libdemo.a文件放在了当前路径,找不到。所以-L是指定链接器在哪个目录下寻找的库文件,句号.表示当前路径。

3、nm命令
nm命令用来查看一个.a文件中都有哪些符号,如:

book@book-desktop:/work/c_test$ nm libdemo.a demo.o:00000000 T func100000014 T func2         U puts
原创粉丝点击