如何修复“加载共享库时出错:libgl.so.1”

如何修复“加载共享库时出错:libgl.so.1”

运行此命令后dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

我在打开 smplayer、cairo-dock、unity-2d-shell 和 amdconfig 时遇到问题,“加载共享库时出错:libGL.so.1:无法打开共享对象文件:没有此文件或目录”。也许其他应用程序也会遇到同样的问题。

但我确实有文件

locate libGL.so.1  
/usr/lib/FGL.renamed.libGL.so.1.2
/usr/lib/libGL.so.1
/usr/lib/libGL.so.1.2
/usr/lib/i386-linux-gnu/libGL.so.1
/usr/lib/i386-linux-gnu/libGL.so.1.2
/usr/lib/i386-linux-gnu/fglrx/fglrx-libGL.so.1.2
/usr/lib/i386-linux-gnu/mesa/FGL.renamed.libGL.so.1.2
/usr/lib/x86_64-linux-gnu/mesa/FGL.renamed.libGL.so.1.2
/usr/lib32/libGL.so.1
/usr/lib32/libGL.so.1.2



ldd $(which unity-2d-shell)|grep libGL  
libGL.so.1 => not found        
ldd $(which mplayer)|grep not  
libGL.so.1 => not found

ldd $(which smplayer)|grep libGL  

一无所获。

答案1

@Braiam 说得对。您还应该知道,找到文件locate并不意味着它存在。locate使用不时刷新的数据库。它不会搜索实际的文件系统,而是搜索它的数据库。您可以updatedb在搜索之前运行以刷新数据库,或者使用-e标志:

-e, --existing
     Print only entries that refer to files existing at the time locate is run.

例如:

$ touch stupid_stupid_file.txt
$ locate stupid_stupid_file.txt   ## No results
$ sudo updatedb                   ## refresh database
$ locate stupid_stupid_file.txt
/home/terdon/stupid_stupid_file.txt  ## the file was found after updatedb
$ rm stupid_stupid_file.txt          ## delete the file
$ locate stupid_stupid_file.txt
/home/terdon/stupid_stupid_file.txt   ## the file is still in the database 
$ locate -e stupid_stupid_file.txt   ## the file is not found using -e

答案2

这可能是因为您一次卸载了多个软件包时,一些链接库被破坏了。您应该事先运行dpkg -l |grep ^rc|awk '{print $2}'一下,以了解会发生什么。幸运的是,可以使用 解决这个问题sudo ldconfig。这将重新创建链接库缓存,并(希望)修复您的库。

当然,这只有你确实/usr/lib/libGL.so.1安装了该库才会起作用:

ls -l /usr/lib/x86_64-linux-gnu/libGLU.so.1
lrwxrwxrwx 1 root root 15 sep 18 14:03 /usr/lib/x86_64-linux-gnu/libGLU.so.1 -> libGLU.so.1.3.1
dpkg -S libGL.so.1
libgl1-mesa-glx:i386: /usr/lib/i386-linux-gnu/mesa/libGL.so.1
libgl1-mesa-glx:amd64: /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
libgl1-mesa-glx:i386: /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2.0
libgl1-mesa-glx:amd64: /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0

(我的是 64 位,这就是差异的原因。)

相关内容