动态库的封装

以 add.c 为例

1.创建库函数的源文件:vim add.c

2.生成目标文件:gcc -c add.c -fpic

3.生成动态库:gcc add.o -o libadd.so -shared

            备注:libadd.so:lib是前缀,add是库的名字,so是后缀,代表是动态库

4.建立调用库函数的源文件:vim demo.c

5.编译执行:gcc demo.c ./libadd.so


静态库和动态库的区别

1.静态库的后缀是 .a,动态库的后缀是 .so;

2.在编译链接的时候,对于静态库链接器是把静态库里的函数拷贝到调用的地方,调用一次拷贝一次;

——》对应实验现象:mv liabadd.a ../之后,./a.out是可执行的。

    对于动态库,链接器是在调用的地方做个“标记”,调用的时候再去动态库里面进行加载

——》对应的实验现象:mv libmath.so ../之后 ,./a.out 是不可执行的

3.链接动态库的可执行文件一般比静态库的可执行文件要小

4.默认的链接方式为动态链接,如果要静态链接的话加个参数 -static

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值