error while loading shared libraries的解决方法

错误提示:

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

这个提示的意思是没有找到xxx.so.0这个文件,那么首先应该确定下,本机是否存在这个.so文件?如果存在,那么我们可以作出判断,xxx.so.0这个动态链接库所在的文件夹不在搜寻范围内.

有几种方法可以解决这个问题.

1. 编辑/etc/ld.so.conf

/etc/ld.so.conf文件是ld的配置文件,在这个文件末尾添加一行xxx.so.0所在的目录在实际操作中,我的Fedora 19 这个文件只有这么一行数据

include ld.so.conf.d/*.conf

其实就是搜寻 ld.so.conf.d/目录下所有*.conf文件. 这样好处是到时候可以一组一组删搜寻路径. 如果已经有了这么一行数据,我们可以在ld.so.conf.d/ 下建立一个新的.conf文件,把xxx.so.0所在目录添加进去. 然后,执行命令

/sbin/ldconfig –v

更新信息后ld就会搜寻目标目录了.

2.修改环境变量LD_LIBRARY_PATH,添加搜寻目录

修改~/.bashrc,~/.bash_profile 等文件,添加如下命令

# .so
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:YOUR_PATH

便可把自己想要的目录添加进LD_LIBRARY_PATH环境变量. 使用

source .bash_profile

就可以让新增的信息生效. ld也会寻找$LD_LIBRARY_PATH 下的各个path

或者设置LD_LIBRARY_PATH为当前命令.比如

env LD_LIBRARY_PATH=YOUR_PATH:$LD_LIBRARY_PATH ./prog