动态库加载失败:error while loading shared libraries: xxx.so: cannot open shared object file: No such file o

ldd main | grep not

0.1 动态库的工作原理可知,只要把动态库libcalc.so的绝对路径添加到动态载入器ld-linux.so的搜索路径中,那么动态载入器就可以获取到动态库libcalc.so的绝对路径,接着就可以找到动态库文件libcalc.so,将动态库文件载入内存,然后就可以使用动态库里面的代码,最终可执行程序main就可以成功运行,不会报错。

还是由0.1 动态库的工作原理可知,动态载入器搜索动态库绝对路径的搜索顺序为:DT_RPATH段→环境变量LD_LIBRARY_PATH→/etc/ld.so.cache文件列表→/lib/或/usr/lib目录

因此,添加动态库绝对路径的方法也有很多种

接下来,我们就按照上述分析进行操作.

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/veroll/Linux/lesson1.6/library/lib

echo $LD_LIBRARY_PATH

#动态链接库:
1
#.bashrc +
#sudo vim /etc/profile
export LD_LIBRARY_PATH+="/usr/local/lib"
# 查看
echo $LD_LIBRARY_PATH

ldd main | grep not

2
#or将动态库绝对路径添加至/etc/ld.so.cache文件列表中:
vim /etc/ld.so.conf
+:
/usr/local/lib
sudo ldconfig

3
将动态库添加至/lib/或/usr/lib目录 or 软链接,注意检查名称,别已经有了 防止覆盖;

posted @ 2023-10-26 13:39  瘋耔  阅读(14)  评论(0编辑  收藏  举报
跳至侧栏