最近用git克隆项目时出现了如题的报错,一顿操作下来,发现这库还是个系统库,没法更新也不能卸载重装,对比了另一台ubuntu文件的md5发现文件也没有损坏。。。
ldd -r /lib/x86_64-linux-gnu/libgnutls.so.30
可以看到未定义的符号挺多,而且报错符号确实来自该动态库
readelf -s /lib/x86_64-linux-gnu/libgnutls.so.30 | grep __gmpz_limbs_write
可以看到动态库里面确实定义了这个全局符号,那问题是什么呢?难道是函数调用不了?
检查前面的过程,可以看到有个比较"离谱"的路径。这里的意思是说 libgnutls.so.30 依赖了另一个动态库 libgmp.so.10,而该动态库来自路径 /disk/sdk/compiler/…,想都不用想,这肯定是不对的呀!
在相同的系统路径下,我们可以找到这个动态库本体正确的位置。那究竟是什么时候链接出错了呢?
echo $LD_LIBRARY_PATH
可以看到路径 /disk/sdk/compiler/… 确认来自该环境变量
通过这么一查,我就想起来了,是我之前配置过 ~/.bashrc,在里面添加过环境变量。注释掉下面两行,重启电脑,问题解决!