linux 下编译的程序运行时可能出现如题的错误,表示找不到动态库。
下面的方法让系统找到动态库。
在fedora上需要注意的一点是ldconfig可能不成功,出现错误:ldconfig: Cannot lstat xxx
Permission denied
这是selinux在作怪,可以用执行命令 setenforce 0 然后再ldconfig
以下内容为转载:
-------------------------------------------------------------------------------------------
error while loading shared libraries: libXXX.so.1.2.3: cannot open
shared object file: No such file or directory
原贴地址:
http://blog.csdn.net/senbar/archive/2006/08/07/1033392.aspx
此时你可以locate libXXX.so.1.2.3 (如果你的文件系统比以前有了变化,如安装了可能是需要的库的开发包,则需要
locate -u 一下)
然 后如果发现了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所在的目录。
如果发现libXXX.so.1.2.3不存在,你可能没安装包含库的程序。一般google一下“XXX linux”就能找到相应的软件。
如果提示是error while loading shared libraries: libXXX.so,但你的系统上有libXXX.so.
5,你可以为libXXX.so.5
做一个软链接 ln -s libXXX.so.5 libXXX.so
如,我执行一个ACE开发包中的样例程序时,出现以下提示:
./logging_app: error while loading shared libraries: libACE.so.5.4.7:
cannot open shared object file: No such file or directory
[root@lf ld.so.conf.d]# locate libACE.so.5.4.7
/opt/ace/ace/libACE.so.5.4.7
/opt/ace/lib/libACE.so.5.4.7
[root@lf ld.so.conf.d]# vi ace.conf
ace.conf中只有一行: /opt/ace/lib
然后再执行 ldconfig