问题描述
当试图运行各种软件(特别是Steam和Yenka)时,我遇到了类似这样的错误:error while loading shared libraries: libGL.so.1: cannot open shared object file: No such file or directory
我正在运行一个带有NVidia Optimus卡的64位系统(对于某些只需要专用图形卡的Windows软件,我需要双启动)。我安装了大黄蜂,我正在使用nvidia-current驱动程序,而不是按照建议从NVidia下载的驱动程序。
库(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
显然正在加载具有该名称的库,但它们位于/usr/lib/x86_64-linux-gnu
中,但是安装的软件似乎无法’see’它。对于Steam,使用optirun运行它会使它工作,但Yenka不是这种情况。我假设optirun导致使用存储在/usr/lib32/nvidia-current
中的库,这允许Steam运行,所以我不明白为什么Yenka不会运行。
任何人都可以解释为什么软件看不到正常的mesa库,为什么Yenka拒绝使用nvidia-current库运行?
最佳解决办法
安装了nvidia驱动程序后,skype正在寻找nvidia软件包提供的i386库。由于不存在,可以使用台面提供的i386 libGL.so.1。
测试了(ubuntu-gnome raring,使用nvidia-325)和(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
然后你就完成了。
次佳解决办法
I am having the same issue after installing skype …so you can do either thing to fix this error..
第一个是通过以下命令运行应用程序…例如我正在运行skype ..
LD_PRELOAD=/usr/lib/i386-linux-gnu/mesa/libGL.so.1 skype
第二,我做了什么
sudo nano /etc/ld.so.conf.d/skype.conf
并在其中添加以下行
/usr/lib/i386-linux-gnu/mesa/
保存&出口
最后运行
sudo ldconfig -v
我希望这会修复你的libGL.so.1错误
你也可以找到libGL.so.1
find / -name libGL.so.1
第三种解决办法
这里的修复工作可行,但有一个更简单。
如果skype
不起作用但optirun skype
确实有效,那么您可以使用以下方法修复它:
sudo apt-get install bumblebee-nvidia --reinstall
(使用Bumblebee和AMD卡的人可能需要做相同的re-installation)。
Bumblebee都会导致并解决这个问题,但它的修复程序会在安装时发生,当它使libGL库可用于集成卡以及功能更强大的卡时。如果在安装Bumblebee时尚未安装这些库,则不会发生这种情况,因此需要re-installation。它也不应该影响你的大黄蜂配置,尽管在你完成之后显然值得检查。