动态库的封装

1.创建库的函数的源文件:vim add.c 只放add函数的文件; vim add.h 只放add函数的声明;vim test.c 是测试文件,用来调用add函数,且头文件加上#include "add.h";

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

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

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

4.将生成的动态库libadd复制到/lib目录下,#cp  ./libadd.so  /lib

5.编译:gcc test.c -ladd         加-l是连接动态库连接的是add动态库

6.执行:./a.out


动态库与静态库的区别:

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

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

对应的实验现象是:mv libadd.a  ../之后,./a.out是可以执行的,

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

对应的实验现象是mv libadd.so ../之后,./a.out是不可以执行的

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

4.默认的链接方式是动态链接!如果要静态链接的话,加一个参数 -static即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值