加载动态库时有时会出现error while loading shared libraries:libcalc.so:可以通过lld命令查看动态库的依赖关系,发现libcalc.so时not found
原因
查找的优先级是DT_RPATH->LD_LIBRARY_PATH->/etc/ld.so.cache->/lib/,/usr/lib
找不到一个优先级顺位延
所以需要把动态库的路径加载进去
解决方法
一:配置环境变量
把libcalc.so所在的路径配置到环境变量LD_LIBRARY_PATH中去(通过pwd查看绝对路径)
但是这个环境变量只是在这个终端中配置的,当关闭终端时,环境变量就消失了,所以需要配置永久的环境变量
(1)用户级别的配置
进入home桌面,配置.bashrc文件,在文件中在最后一行新开一行加上绝对路径,然后更新文件,在重回,ldd发现可以了
(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中但是里面自带的文件太多了,可能会发生修改系统文件,不推荐