其他分享
首页 > 其他分享> > error while loading shared libraries: lib*.so: cannot open shared object file: No such file or direc

error while loading shared libraries: lib*.so: cannot open shared object file: No such file or direc

作者:互联网

动态链接库找不到问题

shared objects (.so files):

At link time, the object is just verified against its API via the corresponding header (.h) file. The library isn't actually used until runtime, where it is needed.

动态库的搜索路径搜索的先后顺序是: 

1.编译目标代码时指定的动态库搜索路径;

2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径; 

3.配置文件/etc/ld.so.conf中指定的动态库搜索路径;

4.默认的动态库搜索路径/lib   /usr/lib

动态库与静态库的最大区别:

静态库是静态链接,也就是在生产可执行文件的时候就把静态库中的实现嵌入到程序中了,一旦编译成功了,静态库也就有存在的价值了,即便静态库不存在了,可执行程序也是可以跑起来的;但是动态库就不一样了,它是遵循动态链接,也是就说编译的时候需要指定路径去找该so文件链接编译,运行的时候也需要指定相应的路径去找. 如果在运行的时候,可执行程序会先去默认的系统lib目录下,寻找该so,如果找不到了,就该报错了:error while loading shared libraries

解决办法:

通过find / -iname lib*.so找到需要的lib*.so,并放到指定的路径!

标签:lib,静态,路径,so,file,such,shared,动态
来源: https://www.cnblogs.com/scandit/p/15896176.html