在Linux下,如果程序加载时,提示XXXX cannot open shared object file: No such file or directory。而你又确信自己有安装过这个库,那么多半是路径设置的问题。
查看链接到的库
# ldd aisenserecog.so.0.7.0
linux-vdso.so.1 => (0x00007ffcf2658000)
libwebsockets.so.19 => not found
libcjson.so.1 => not found
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fad7c245000)
libc.so.6 => /lib64/libc.so.6 (0x00007fad7be77000)
/lib64/ld-linux-x86-64.so.2 (0x00007fad7c667000
查找一下库安装的路径
locate libwebsockets.so
/usr/local/lib/libwebsockets.so
/usr/local/lib/libwebsockets.so.19
locate libcjson.so
/usr/local/lib64/libcjson.so
/usr/local/lib64/libcjson.so.1
/usr/local/lib64/libcjson.so.1.7.15
解决方法
方法1. 拷贝
把库拷贝到动态加载器默认搜索目录:/usr/lib和/lib,或者你的程序库路径下去。
方法2. 环境变量
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/:/usr/local/lib64/
方法3.ldconfig
编辑/etc/ld.so.conf文件,加入库文件所在目录的路径,运行ldconfig,该命令 会重建/etc/ld.so.cache文件。
vim /etc/ld.so.conf
添加内容
include ld.so.conf.d/*.conf
/usr/local/lib/
/usr/local/lib64/
执行ldconfig
ldconfig