linux应用程序找不到了,Linux下应用程序找不到存在的库(.so/.a)的解决方法

各种各样的环境变量控制着一些关键的过程。例如你可以临时为你特定的程序的一次执行指定一个不同的函数库。Linux系统中,通常变量LD_LIBRARY_PATH就是可以用来指定函数库查找路径的,而且这个路径通常是在查找标准的路径之前查找。这个是很有用的,特别是在调试一个新的函数库的时候,或者在特殊的场合使用一个肥标准的函数库的时候。环境变量LD_PRELOAD列出了所有共享函数库中需要优先加载的库文件,功能和/etc/ld.so.preload类似。这些都是有/lib/ld-linux.so这个loader来实现的。值得一提的是,LD_LIBRARY_PATH可以在大部分的UNIX-linke系统下正常起作用,但是并非所有的系统下都可以使用,例如HP-UX系统下,就是用SHLIB_PATH这个变量,而在AIX下则使用LIBPATH这个变量。

LD_LIBRARY_PATH在开发和调试过程中经常大量使用,但是不应该被一个普通用户在安装过程中被安装程序修改,大家可以去参考http://www.visi.com/~barr/ldpath.html,这里有一个文档专门介绍为什么不使用LD_LIBRARY_PATH这个变量。

环境变量LD_LIBRARY_PATH列出了查找共享库时除了默认路径之外的其他路径。

如果不想修改或无法修改(无root权限)/etc/ld.so.conf而使用其他路径下的库文件

就需要设置LD_LIBRARY_PATH了。

例:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/lib

这样就可以使用/opt/lib下的库文件啦。当然还是修改/etc/ld.so.conf方便。

另一篇文章:

关于 error while loading shared libraries: libXXX.so.1.2.3: cannot open shared object file: No such file or directory

然后如果发现了libXXX.so.1.2.3的确存在,就把libXXX.so.1.2.3所在的目录加入到 /etc/ld.so.conf 中,或者在 /etc/ld.so.conf.d/ 下新建一文件,如 XXX.conf ,其内容是libXXX.so.1.2.3所在的目录。如果提示是error while loading shared libraries: libXXX.so,但你的系统上有libXXX.so.5,你可以为libXXX.so.5做一个软链接 ln -s libXXX.so.5 libXXX.so.

在linux下,可以把动态链接库的目录加入这个文件,然后执行一下ldconfig。这样程序就能找到动态链接库了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值