Linux静态库与动态库

Linux下的库有两种:静态库和动态库(共享库)
1.什么是静态库?
在编译前就链接到目标程序中,作为可执行程序的一部分。在程序运行时不再依赖静态库,占用内存大(linux下的库形式 : xxxx.a 、 windows下的库形式 : xxxx.lib)。
优点:
(1)运行速度快
(2)发布程序无需提供静态库,因为已经在APP中,移植方便
缺点:
(1)程序大
(2)链接时完整地拷贝至可执行文件中,别多次使用就有多份冗余拷贝。
(3)更新,部署,发布较为麻烦
2.什么是动态库?
动态库,是在程序执行时动态(临时)由目标程序去调用。
优点:
(1)链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序可以共用,节省内存。
(2)程序升级简单,目标程序没有库的源代码,升级之后只要库的名字不变,函数名参数不变,只是函数实现做了优化,就能加载成功。
缺点:
(1)运行慢
(2)程序相对小
3.静态库的制作与使用
制作步骤:
使用文件:源代码.c或者.cpp
(1)将.c文件生产.o文件 gcc a.c b.c -c
(2)将.o文件打包
ar rcs 静态库的名字 使用文件
ar rcs libtest.a a.o b.o
使用步骤:
(1)gcc a.c -ltest -L ./ -o mainstatic
-l:是指定要使用的静态库名称,库名砍头去尾
-L指定编译器从-L指定的路径去找静态库。默认是从/usr/lib /usr/local/lib去找。
4.动态库的制作与使用
制作步骤:
(1)gcc -shared -fpic a.c -o libcalc.so
-shared 指定生成动态库
-fpic标准,用于编译阶段,生成目标文件时使用该选项。
使用步骤:
(1)gcc a.c -ltest -L ./ -o mainDy
5.指定动态库的位置
方法一:
(1)vi /etc/ld.so.conf
(2)添加lib目录
(3)ldconfig
方法二:
通过环境变量LD_LIBRARY_PATH指定动态搜索路径。
export LD_LIBRARY_PATH = “生成动态库文件的路径”

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值