linux下静态库与动态库创建与使用

linux下静态库与动态库创建与使用
一.静态库
命名格式:lib+静态库名+.a
制作静态库步骤:
步骤1:将需要制作静态库的所有源文件编译生成.o;命令:gcc ./.c -c(其中./.c为当前目录下所有.c源文件)
步骤2:将生成的所有.o打包
命令:ar rcs libmystatic.a .o
使用:法1:gcc 源文件.c -L 静态库路径 -l(小写L) 静态库名字(就是lib静态库名.a)-I(大写I)头文件路径 -o 目标可执行程序名
gcc ./
.c -L ./ -l mystatic -o test
法2:gcc 源文件.c lib静态库名.a -I(大写I)头文件路径 -o 目标可执行程序名
gcc ./*.c libmystatic.a -o test
静态库的优点:
1.发布程序的时候,不需要提供对应的库
2.加载库的速度快缺点:
缺点:
1.库被打包到应用程序中,导致库的体积很大
2.库如果发生了改交,需要重新编译程序

共享库即动态库
命名: lib+名字+.so
制作步骤:
生成与位置无关的代码(生成与位置无关的.o) gcc -fPIC *.c -c
打包.o文件 gcc -shared -o lib共享库名.so *.o
在这里插入图片描述使用:法1:gcc 源文件.c -L 共享库路径 -l(小写L) 共享库名字(就是lib共享库名.so)-I(大写I)头文件路径 -o 目标可执行程序名
在这里插入图片描述查询可执行程序在执行时依赖的所有动态库: ldd 可执行程序名
在这里插入图片描述动态链接器可自动调用动态库。
第一种解决方案:将动态库放到/lib下即可,此方法不要使用,因为这是系统库目录。
第二种解决方案:export LD_LIBRARY_PATH=动态库路径
在这里插入图片描述此方法关掉终端时就失效,此方法在开发过程测试时就可以使用。临时导入即可。
第三种解决方案:在家目录的bashrc中设置export LD_LIBRARY_PATH=动态库路径;因为每次开启终端都会执行此文件。永久设置。改完后需要重启终端。
第四种解决方案:必须掌握
步骤:1.需要找到动态链接器的配置文件;/etc/ld.so.conf
2.动态库路径写到配置文件中;sudo vi -l ld.so.conf 添加动态库绝对路径
3.更新 sudo ldconfig -v
4.验证如下:
在这里插入图片描述法2:gcc 源文件.c lib共享库名.so -I(大写I)头文件路径 -o 目标可执行程序名

动态库的优点:
1.执行程序体积小
2.动态库更新了,不需要重新译程序,因为接口不变
缺点:
1.发布程序的时候,需要将动态车提供给用户
2.动态库没有被打包到应用程序中,加载速度相对较慢。
windows下静态库与动态库可单击参考此文

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值