马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
linux系统下进行程序安装、执行的时候经常遇到如下问题: **/**/**/ error while loading shared libraries: *.so.*: cannot open shared object file: No such file or directory导致这个问题出现的原因有很多,主要是如下三种情况: 一、共享库不存在 1、如果需要连接的共享库不存在就必须要安装所需要的共享库,一般linux的各种共享库在网络上都能够搜索到,下载下来安装上就可以了,并且安装好共享库以后可以通过LD_LIBRARY_PATH变量指定所需共享库的路径。采用LD_LIBRARY_PATH的方法毕竟还是一个临时的方法,说是临时的方法原因是你没有ROOT权限,如果拥有ROOT权限可以用下面提到的方法解决,就可以一劳永逸了。 二、共享库存在,但是连接不到 1、共享库存在还连接不到就可能是动态配置文件没有连接到共享库的问题了 解决办法: A、上面已经提到了一个LD_LIBRARY_PATH变量来临时解决的办法 B、还可以通过修改/etc/ld.so.conf文件来永久的实现自动连接共享库,只需要将共享库所在的路径加载到/etc/ld.so.conf文件中就可以了,例如:共享库在/lib路径下,可以直接将/lib加载到/etc/ld.so.conf文件中,修改完成以后执行ldconfig命令就可以实现共享库的自动连接,例如: # cat /etc/ld.so.conf include ld.so.conf.d/*.conf # echo "/lib" >> /etc/ld.so.conf # ldconfig 注释:ldconfig命令的用途, 主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下, 搜索出可共享的动态链接库(格式如lib*.so*), 进而创建出动态装入程序(ld.so)所需的连接和缓存文件. 缓存文件默认为/etc/ld.so.cache, 此文件保存已排好序的动态链接库名字列表. 三、共享库不够新 1、库不够新就只能通过更新库来实现了,方法一样是在网上搜索到安装库,进行库文件的更新,然后再实现链接 2、库文件不够旧——一般情况下共享库都是可以实现向下兼容的,但是也不排除兼容不到的地方,所以可以通过"更新"库来解决这个问题,解决好以后直接按照上面的办法进行连接就可以了 3、系统内核不一致,这也可能是共享库的问题,你的工具的要求内核和实际内核不一致,这种情况下你就必须要更改内核版本进行解决了,查看内核的方式是:uname -r,然后通过LD_ASSUME_KERNAL变 量当前内核,也可以在工具的相应文件中进行更改,例如:LD_ASSUME_KERNAL=2.4.0 解决办法个人总结就这么几种情况,请参考解决 |