linux下动态库的制作和使用

动态库的命名规则:

lib + 库的名字 + .so

 

动态库的制作步骤:

1. 生成与位置无关的.o, gcc -fPIC -c *.c(所谓与位置无关相对静态库而言,静态库参与编译是放到代码段中参与编译,而动态库编译是只是动态库表示的符号参与编译,真正加载是在程序运行时,加载时的地址空间是根据函数调用的地址来决定的,不固定)

2. 将所有.o打包成.so, gcc -shared -o libMySum.so *.o

 

动态库的使用:

2019010621291470.png

以调用库libMySum.so为例

1. gcc main.c lib/libMySum.so 

2. gcc main.c -L lib -l MySum

 

找不到连接的动态库解决方法:

1. 将动态库文件放到系统的lib下

2. 将动态库文件的路径指定到LD_LIBRARY_PATH中,如export LD_LIBRARY_PATH=./lib[临时方案,关闭终端失效]

3. 修改配置文件,添加export LD_LIBRARY_PATH=/home/yc/linux-base/day03/lib到~/.bashrc最后,每次终端开启都会读该配置文件

4. Step1.找到动态连接器的配置文件(/etc/ld.so.conf)    Step2.动态库的配置文件写到配置文件中(添加库的绝对路径到文件末尾)   Step3.更新配置文件(sudo ldconfig -v)

 

动态库的优缺点:

优点1:执行程序体积小

优点2:动态库更新不需要重新编译程序(前提是接口没有变化)

缺点1:发布时需要把动态库文件提供给用户

缺点2:运行时加载,相对静态库来说加载速度较慢

 

注意点:

ldd:查看应用程序执行时依赖的所有的动态库

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SuperYang_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值