ubuntu中打开vim出现错误:/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0: undefined symbol: XML_SetHashSalt
使用vim时突然出现错误如下:
因为装matlab时改变了LD_LIBRARY_PATH的值。其值现在是:
LD_LIBRARY_PATH=/usr/lib:/usr/local/MATLAB/MATLAB_Runtime/v96/runtime/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v96/bin/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v96/sys/os/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v96/extern/bin/glnxa64
具体原因如下:
执行命令 ldd /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0,得到结果如下:
从上图中我们发现libexpat.so.1的路径变成了matlab目录下的,这就是我们安装matlab更改LD_LIBRARY_PATH造成的结果。本来应该使用系统中的libexpat.so.1而不是使用matlab中的libexpat.so.1,其路径如下图所示
解决办法:
方法一:直接将/usr/local/MATLAB/MATLAB_Runtime/v96/bin/glnxa64/libexpat.so.1文件改名,这样子就能将其隐藏。改名命令如下:
mv libexpat.so.1 libexpat.so.1.tmp
这种办法比较粗暴总感觉会对matlab有影响,虽然我刚开始用的就是这种做法,而且还没发现有什么问题~~
方法二:上面也说了出现这个问题的原因是动态库调错了。这是由于在安装matlab时设置LD_LIBRARY_PATH设置的有问题,我直接设置成了matlab安装路径下的lib,如下:
需要将其修改成如下:
export LD_LIBRARY_PATH=/lib:
H
O
M
E
/
l
i
b
:
/
l
i
b
/
x
8
6
6
4
−
l
i
n
u
x
−
g
n
u
:
/
u
s
r
/
l
i
b
:
HOME/lib:/lib/x86_64-linux-gnu:/usr/lib:
HOME/lib:/lib/x8664−linux−gnu:/usr/lib:{MATLAB_HOME}/glnxa64
这里得说明两点:
1)上面设置的其实就是系统在调用链接库的时候,可以从/lib、/lib/x86_64-linux-gnu、/home/cjh/lib、/usr/lib、/usr/lib:/usr/local/MATLAB/MATLAB_Runtime/v96/bin/glnxa64这些路径下查找。我一开始没加/lib/x86_64-linux-gnu,以为包含了/lib路径就行了,然而没有起作用。这可能和系统在选择先遍历那个路径的方式有关,所以尽量把路径写到文件所在路径。
2)我修改的是/etc/profile文件,因为我安装matlab时就是在这个文件里面设置的。如果你是在其他文件设置的,可以根据自己的实际情况进行修改。对于.bashrc、.profile、.bash_profile、profile之间的区别可以参考这篇文章:
记住修改完之后要执行 source /etc/profile。