错误提示:
./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