linux 调用动态库时 出现:“error while loading shared libraries”“cannot open shared object file: No such file”

《专题帖》

在运行动态库程序时,需要添加动态库路径。【警惕】

       默认情况下,linux系统链接器,编译器只会使用/lib和/usr/lib这两个目录下的库文件,通常我们生成的.so库不在系统默认目录中,或者通过源码包进行安装时,在/usr/local/lib目录下等等。当运行程序需要链接动态库时,提示找不到相关的.so库,会报错。也就是说,在系统默认的库搜索目录中,找不到我们的.so文件。有以下三种方法解决办法:

       1、修改/etc/ld.so.conf文件,sudo vi /etc/ld.so.conf 在"include ld.so.conf.d/*.conf"下方增加,指定动态库路径,如"/home/won/local/lib"。保存后,在命令行终端执行:/sbin/ldconfig -v;其作用是将文件/etc/ld.so.conf列出的路径下的库文件缓存到/etc/ld.so.cache以供使用

        2、修改LD_LIBRARY_PATH环境变量,

export LD_LIBRARY_PATH=$(LD_LIBRARY_PATH)/home/won/nfs_share/lib_so_resps

如果只在命令行中简单设置,仅在该次登陆有效。可以在/home/won/ 用户根目录下,vi .bashrc 在文件末尾,粘贴上述指令,可在用户登陆后永久生效。

        3、将so库文件拷贝到/lib /usr/lib目录下,直接有效。

 

建议:开发者推荐第2种办法,设置在bashrc文件中后,也很方便,不影响系统其他功能。如果so文件不在修改,也可采纳第3种办法。第1种方法适合软件的长期部署情况。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值