在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4905|回复: 2

[原创] error while loading shared libraries 问题解决办法

[复制链接]
发表于 2012-12-20 13:00:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

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

解决办法个人总结就这么几种情况,请参考解决

发表于 2012-12-30 10:24:58 | 显示全部楼层
在EDA安装过程中,经常会出现这种问题,楼主分析的很透彻,谢谢共享经验!
发表于 2020-11-8 14:06:18 | 显示全部楼层
thank you for sharing
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-6-13 05:25 , Processed in 0.022199 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表