动态库的制作与使用及 动态库加载失败解决

动态库的制作与使用及 动态库加载失败解决_第1张图片

加载动态库时有时会出现error while loading shared libraries:libcalc.so:动态库的制作与使用及 动态库加载失败解决_第2张图片可以通过lld命令查看动态库的依赖关系,发现libcalc.so时not found

原因

动态库的制作与使用及 动态库加载失败解决_第3张图片查找的优先级是DT_RPATH->LD_LIBRARY_PATH->/etc/ld.so.cache->/lib/,/usr/lib

找不到一个优先级顺位延

所以需要把动态库的路径加载进去

解决方法

一:配置环境变量

动态库的制作与使用及 动态库加载失败解决_第4张图片

把libcalc.so所在的路径配置到环境变量LD_LIBRARY_PATH中去(通过pwd查看绝对路径)

但是这个环境变量只是在这个终端中配置的,当关闭终端时,环境变量就消失了,所以需要配置永久的环境变量

(1)用户级别的配置

动态库的制作与使用及 动态库加载失败解决_第5张图片进入home桌面,配置.bashrc文件,在文件中在最后一行新开一行加上绝对路径,然后更新文件,在重回,lld发现可以了

(2)系统级别的配置

使用 sudo vim /etc/profile 一样在最后一行插入那个export(省略了)

然后再source /etc/profile 更新一下

在运行main又可以了

二、修改etc/ld.so.cache文件

不能直接打开这个文件  通过sudo vim /etc/ld.so.conf间接修改

直接把路径粘贴在这

然后直接更新  sudo ldconfig

就ok了

其实也可以放到/lib/和/usr/lib中但是里面自带的文件太多了,可能会发生修改系统文件,不推荐

你可能感兴趣的:(linux,运维,服务器)