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

shared objects (.so files):

  • 可以动态链接的库,在Windows上是Dynamic Link Library(DLL),在UNIX或Linux上是Shared Library

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

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,并放到指定的路径!

具体参考:
Linux中error while loading shared libraries错误解决办法


运行编译后的程序报错 error while loading shared libraries: lib*.so: cannot open shared object file: No such file or directory

posted @ 2022-02-15 17:24  scandit  阅读(1006)  评论(0编辑  收藏  举报