如何修復“載入共享庫時出錯: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 位,這就是差異的原因。)

相關內容