nvidia加载 libGL.so.1 出错

分享于 

4分钟阅读

ubuntu

  繁體

问题

在运行各种软件(尤其是Steam和Yenka)时,遇到类似以下错误:error while loading shared libraries: libGL.so.1: cannot open shared object file: No such file or directory

库(libGL.so.1)在/usr/lib目录中不存在,但在/usr/lib32/nvidia-current中。/usr/lib32/nvidia-current/libGL.so.304.64

ldconfig -p的输出部分:


libGL.so.1 (libc6,x86-64, OS ABI: Linux 2.4.20) => /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1


libGL.so (libc6,x86-64, OS ABI: Linux 2.4.20) => /usr/lib/x86_64-linux-gnu/libGL.so


libGL.so (libc6,x86-64, OS ABI: Linux 2.4.20) => /usr/lib/x86_64-linux-gnu/mesa/libGL.so



为什么软件看不到普通的mesa库,为什么Yenka拒绝运行nvidia当前库?


答案1

安装了nvidia驱动程序后,skype正在寻找nvidia软件包提供的i386库。因为不存在,所以使用mesa提供的i libGL.so.1是可以的。

经过测试(使用nvidia-325的ubuntu-gnome raring)和(使用nvidia-319的(ubuntu-gnome saucy,使用nvidia-319)),我们可以通过以下方法解决此问题:


update-alternatives --display i386-linux-gnu_gl_conf




i386-linux-gnu_gl_conf - auto mode


 link currently points to /usr/lib/nvidia-325/alt_ld.so.conf


/usr/lib/i386-linux-gnu/mesa/ld.so.conf - priority 500


 slave i386-linux-gnu_xorg_extra_modules: /usr/lib/i386-linux-gnu/xorg/x11-extra-modules


/usr/lib/nvidia-325/alt_ld.so.conf - priority 8602


Current 'best' version is '/usr/lib/nvidia-325/alt_ld.so.conf'



执行以下操作:


sudo update-alternatives --config i386-linux-gnu_gl_conf



然后选择最佳替代方案(我选择了i386-linux-gnu/mesa/ld.so.conf):在下面的输出中,替代方案i386-linux-gnu_gl_conf有两个选择(提供/etc/ld.so.conf. d/i386-linux-gnu_GL.conf)。


 Selection Path Priority Status


------------------------------------------------------------


* 0 /usr/lib/nvidia-325/alt_ld.so.conf 8602 auto mode


 1 /usr/lib/i386-linux-gnu/mesa/ld.so.conf 500 manual mode


 2 /usr/lib/nvidia-325/alt_ld.so.conf 8602 manual mode



Press enter to keep the current choice[*], or type selection number: 1


update-alternatives: using /usr/lib/i386-linux-gnu/mesa/ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_GL.conf (i386-linux-gnu_gl_conf) in manual mode



完成后,尝试运行:

 
sudo ldconfig




答案2

在安装skype,之后,我有同样的问题,所以你可以这么来修复这个错误,

首先,通过以下命令运行应用程序,例如,我正在运行skype,


LD_PRELOAD=/usr/lib/i386-linux-gnu/mesa/libGL.so.1 skype



SOURCE

第二个是我做的


sudo nano /etc/ld.so.conf.d/skype.conf



并添加以下行


/usr/lib/i386-linux-gnu/mesa/



保存&退出

最后运行

 
sudo ldconfig -v



你也可以找到libGL.so.1


 find / -name libGL.so.1




答案3

有一个更简单的方法。

如果skype不起作用,但是optirun skype起作用,那么你可以使用:


sudo apt-get install bumblebee-nvidia --reinstall