操作系统:Ubuntu 16.04
问题描述:
在终端启动gedit命令或者vscode命令报错:gedit: symbol lookup error: /home/chujie/anaconda3/lib/libgobject-2.0.so.0: undefined symbol: g_date_copy
问题分析:
导致错误的原因应该是gedit依赖libgobject-2.0.so库,而/home/chujie/anaconda3/lib下的这个库版本不对,没有对应的符号。
因此解决的思路是从系统中找到正确的依赖库。
查找系统中存在的libgobject库:
locate libgobject-2.0.so
/home/chujie/anaconda3/lib/libgobject-2.0.la
/home/chujie/anaconda3/lib/libgobject-2.0.so
/home/chujie/anaconda3/lib/libgobject-2.0.so.0
/home/chujie/anaconda3/lib/libgobject-2.0.so.0.5600.1
/usr/lib/x86_64-linux-gnu/libgobject-2.0.a
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4800.2
可以看到除了/home/chujie/anaconda3/lib目录下以外,/usr/lib/x86_64-linux-gnu/目录下也有,且前者的版本应该为libgobject-2.0.so.0.5600.1,后者的版本为libgobject-2.0.so.0.4800.2。应该就是这个版本问题引起的程序错误。
解决办法:
修改环境变量,让gedit链接到正确的库。
# 编辑.bashrc文件
vim ~/.bashrc
# 按快捷键i开始编辑文件,在文件最后一行加上动态链接库路径
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
# 让配置文件生效
source ~/.bashrc
# 重新查看gedit的链接库
cd /usr/bin
ldd gedit | grep libgobject-2.0
# 链接库已经变成:
libgobject-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007f0b242ad000)
再从终端输入命令:gedit
就可以正常启动记事本了。