解决gedit: symbol lookup error: /home/xxx/libgobject-2.0.so.0: undefined symbol: g_date_copy问题

操作系统: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

就可以正常启动记事本了。

你可能感兴趣的:(解决gedit: symbol lookup error: /home/xxx/libgobject-2.0.so.0: undefined symbol: g_date_copy问题)