linux中的动态链接库

在使用动态链接库的时候并不会把动态库的代码全部copy到生成的程序中,而是在程序运行的时候再去加载对应的代码,所以使用同一个动态库的程序可以共用一份代码,而且当你对动态库进行升级的时候,也不用去修改使用它的代码。

以上是动态库生成使用的全过程,可是当运行的时候却出现了这种错误。

用ldd命令再看一下

怎么会找不到,编译的时候不是加进去了吗,而且编译的时候也没有报错。因为程序编译的时候加入动态库和运行的时候使用动态库是两个概念,使用-L . 只是在编译的时候告诉编译器我引用的动态库在什么地方,否则连编译都过不了。使用动态库就不会有这种困扰,因为在编译的时候代码就都已经全都转移到生成的文件里了。

想解决这个问题,方法有很多种,不过归根结底都是一个目的,让程序在运行的时候能够找到所需要的动态库文件。

动态库的搜索路径搜索的先后顺序是: 

  1.编译目标代码时指定的动态库搜索路径;

  2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径; 

  3.配置文件/etc/ld.so.conf中指定的动态库搜索路径;

  4.默认的动态库搜索路径/lib    /usr/lib。

通过第一条解决问题的方法是

使用-wl,-rpath= 来指定动态库的搜索路径

第二条解决方案

第三种就是在动态库搜索的conf文件中添加上你要用的那个动态库文件的路径。

第四种,把你的动态库文件放到系统动态库目录中。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值