Linux下静态库和动态库的制作使用

Linux下静态库和动态库的制作使用

1.静态库和动态库的区别

首先,一个C++程序从源文件到可执行文件的需要经过:

预编译 - 编译 -汇编 - 链接

静态库和动态库主要在链接的阶段起到不同的效果。在链接阶段,静态库会将程序依赖的库文件复制一份到程序中,来保证程序可以正常运行。而动态库则是将库文件加载到内存中供程序使用。

2.静态库的制作

假设我的程序中有四个算法,我想打包成一个静态库:
在这里插入图片描述
其中,add.c 、div.c、mult.c、sub.c是需要制作的库的源文件。head.h是分发给用户的头文件,用户拿到头文件就能知道算法的接口是怎么样子的,以及如何使用。

第一步:将add.c 、div.c、mult.c、sub.c源文件转为.o文件

gcc -c add.c div.c mult.c sub.c

在这里插入图片描述
这时候生成了四个.o文件。

第二步:用 archive 制作静态库。使用ar指令将四个.o文件打包成一个格式为libxxx.a 的静态库。注意“xxx”是库的名称,可以自己任意取。比如这里将这个库命名为 “calc”,那么执行指令如下:

ar rcs libcalc.a *.o

其中,“ar”是archive 软件的缩写,rcs分别表示“插入”、“创建”、“索引”。

第三步:将头文件head.h分给用户,用户拿到手知道怎么使用。

第四步,在gcc编译的时候指定使用的静态库:

gcc main.c -o app -l calc

其中,-l 用于指定库,而calc是库的名称。注意calc文件要在main文件的同级目录下。

最后执行app可执行文件即可:

./app

3.动态库的制作

在第一步也是将.c文件转化成.o文件。但是不一样的是要加上指令 “-fpic”来生成和位置无关的.o文件:

gcc -c -fpic add.c div.c mult.c sub.c

在第二步创建动态库:

gcc -shared *.o -o libcalc.so

注意动态库是以.so结尾的。

生成之后和静态库一样使用即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值