linux 缺少动态链接库error while loading shared libraries

error while loading shared libraries的解決方法:
执行行程式时,如遇到像下列错误:

./tests: error while loading shared libraries: xxx.so.0:cannot open shared object file: No such file or directory

那就表示系统不知道xxx.so 放在哪个目录下。

可以在/etc/ld.so.conf中加入xxx.so所在的目录。

一般情况,有很多.so在/usr/local/lib路径下,可以在/etc/ld.so.conf中加入/usr/local/lib这一行

或者加入一行xx.so所在的绝对路径,如/usr/local/log4cxx/lib/ 也行。

保存后,还要执行 /sbin/ldconfig –v 更新才生效。

如果共享库文件安装到了其它"非/lib或/usr/lib" 目录下, 但是又不想在/etc/ld.so.conf中加路径(或者是没有权限加路径). 那可以export一个全局变量LD_LIBRARY_PATH, 然后运行程序的时候就会去这个目录中找共享库.

LD_LIBRARY_PATH的意思是告诉loader在哪些目录中可以找到共享库. 可以设置多个搜索目录, 这些目录之间用冒号分隔开. 比如安装了一个mysql到/usr/local/mysql目录下, 其中有一大堆库文件在/usr/local/mysql/lib下面, 则可以在.bashrc或.bash_profile或shell里加入以下语句即可:

export LD_LIBRARY_PATH=/usr/local/mysql/lib:$LD_LIBRARY_PATH

一般来讲这只是一种临时的解决方案, 在没有权限或临时需要的时候使用.

总结下来主要有几种方法:

  • 用ln将需要的so文件链接到/usr/lib或者/lib这两个默认的目录下边

ln -s /where/you/install/lib/*.so /usr/lib
sudo ldconfig

  • 修改LD_LIBRARY_PATH

export LD_LIBRARY_PATH=/where/you/install/lib:$LD_LIBRARY_PATH
sudo ldconfig

  • 修改/etc/ld.so.conf,然后刷新

vim /etc/ld.so.conf
add /where/you/install/lib

sudo ldconfig

  • 将所需要的.so文件拷贝到/etc/ld.so.conf 中的路径下
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
当在Linux上运行程序时,如果遇到以下错误之一: ``` error while loading shared libraries: <library_name>: cannot open shared object file: No such file or directory ``` 或者 ``` error while loading shared libraries: <library_name>: cannot open shared object file: Permission denied ``` 这通常表示程序依赖的共享库文件无法被找到或者无法被访问。这可能是由于以下原因之一导致的: 1. 共享库文件不存在:检查程序所依赖的共享库文件是否存在于系统中。确保它们已正确安装或位于正确的路径下。 2. 共享库路径问题:检查LD_LIBRARY_PATH环境变量是否设置正确。LD_LIBRARY_PATH指定了动态链接器在运行时查找共享库文件的搜索路径。确保共享库文件所在的路径在LD_LIBRARY_PATH中,或者将共享库文件复制到默认的搜索路径(例如/lib、/usr/lib等)下。 3. 缺少库依赖关系:共享库可能依赖其他库文件。如果缺少了这些依赖关系的库文件,那么程序运行时会出现错误。通过使用`ldd`命令查看程序依赖的共享库,并确保这些依赖库已正确安装。 4. 权限问题:如果您没有适当的权限来访问或执行共享库文件,那么会出现"Permission denied"错误。确保您对共享库文件具有足够的权限。 5. 32位/64位不匹配:如果程序和共享库之间的位数不匹配(例如,程序为32位而共享库为64位),也会导致加载共享库失败。确保程序和共享库是兼容的。 通过检查以上问题,您应该能够解决在Linux上加载共享库时出现的错误。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值