error while loading shared libraries: libxxx.so: cannot open shared object file: No such file or directory
发生这种问题就在于编译程序链接的库在运行时找不到,或者不存在,或者版本不正确等。使用ldd 你的应用程序|grep -i "libxxx"
来查看程序中具体链接的库的位置和版本号,然后查看对应位置下是否有该共享库,如果没有,需要确定编译的时候指定的位置是否正确,如果仅仅是别名的问题,可以用ln
创建一个链接
如果指定的目录有对应的库,但是编译的程序还是找不到,有可能你的库存放的位置不是系统默认位置,编译的时候又没有指定加载位置,导致编译的过程没有找到。编译链接没有找到对应的库,并不会报错,所以需要通过ldd
查看。
系统默认搜索的位置是/lib(64)
/usr/lib(64)
,而一些自己编译安装的路径默认为/usr/local/lib(64)
,所以安装完成后也需要指定,比如设置环境变量LD_LIBRARY_PATH
如果说ldd可以看到共享库,编译也正常,但是运行还是报上面的错误,找不到文件,可能是共享库的权限问题,运行程序无法访问。