制作静态链接库并使用

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.c
ar -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 func1
00000014 T func2
         U puts
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值