加载libGL.so.1时出错

当试图运行各种软件(特别是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的软链接/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 ,但是安装的软件似乎无法“看到”它。 对于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 

然后你就完成了。

安装skype后我遇到了同样的问题…所以你可以做任何事情来修复这个错误..

第一个是通过以下命令运行应用程序…例如我正在运行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卡的人可能需要进行相同的重新安装)。

Bumblebee都会导致并解决这个问题,但它的修复程序会在安装时发生,当它使libGL库可用于集成卡以及function更强大的卡时。 如果在安装Bumblebee时尚未安装这些库,则不会发生这种情况,因此需要重新安装。 它也不应该影响你的大黄蜂配置,尽管在你完成之后显然值得检查。

我不确定这是否有助于澄清,但我对skype和libGL.so.1有同样的问题。 还使用Optimus卡和大黄蜂运行13.04。

我没有optirun运行skype的问题,但它运行良好。 我只是将桌面文件更改为每次运行optirun而且瞧。 固定!

我有一个类似的问题,并通过在我的64位系统上安装32位库来解决它: apt-get install ia32-libs

编辑桌面条目:

 sudo nano /usr/share/applications/skype.desktop 

将Exec更改为:

 Exec=env PULSE_LATENCY_MSEC=60 LD_PRELOAD=/usr/lib/i386-linux-gnu/mesa/libGL.so.1 skype %U 

这运行:

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

在使用启动器/桌面条目启动Skype之前运行Skype。

只要你使用应用程序启动器启动它,它应该在那之后运行正常。

从官方Steam页面下载最新版本,而不是从终端下载所需内容(如果有需要)。 如果你还没有加入bumblebee ppa。

 sudo add-apt-repository ppa:bumblebee/stable 

使用此命令更新它:

 sudo apt-get update 

并安装virtualgl (在Steam中为我解决了libgl.so.1错误的问题)

 sudo apt-get install virtualgl 

尝试:

 sudo apt-get install libgl1-mesa-glx-lts-utopic:i386