加载 libGL.so.1 时出错

加载 libGL.so.1 时出错

当尝试运行各种软件(特别是 Steam 和 Yenka)时,我遇到了类似这样的错误:error while loading shared libraries: libGL.so.1: cannot open shared object file: No such file or directory

我运行的是 64 位系统,配有 NVidia Optimus 显卡(我为某些需要专用显卡的 Windows 软件双重启动)。我安装了 bumblebee,并且使用 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,但是已安装的软件似乎无法“看到”它。对于 Steam,使用 optirun 运行它会使其工作,但对于 Yenka 则不是这样。我假设 optirun 会导致/usr/lib32/nvidia-current使用存储在 中的库,从而允许 Steam 运行,所以我不明白为什么 Yenka 无法运行。

有人能解释为什么软件看不到正常的 mesa 库,以及为什么 Yenka 拒绝使用 nvidia-current 库运行吗?

答案1

安装 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

我希望这能解决你的问题库GL.so.1错误,就像我的一样

您还可以找到 libGL.so.1

   find / -name libGL.so.1

答案2

安装 nvidia 驱动程序后,skype 会查找 nvidia 软件包提供的 i386 lib。由于不存在,因此可以使用 mesa 提供的 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

然后你就完成了。

答案3

这里的修复会起作用,但还有一个更简单的方法。

如果skype不起作用但optirun skype确实有效,那么您可以使用以下方法修复它:

sudo apt-get install bumblebee-nvidia --reinstall

(使用带有 AMD 卡的 Bumblebee 的用户可能需要进行等效的重新安装)。

Bumblebee 既能导致这个问题,也能解决这个问题,但它的修复是在安装时进行的,此时它使 libGL 库可供集成卡和功能更强大的卡使用。如果在安装 Bumblebee 时尚未安装这些库,则不会发生这种情况,因此需要重新安装。它也不会影响您的 bumblebee 配置,不过显然在完成此操作后值得检查一下。

答案4

我不确定这是否有助于澄清问题,但我在 skype 和 libGL.so.1 方面也遇到了同样的问题。还运行了 13.04,带有 optimus 卡和 bumblebee。

我在不使用 optirun 的情况下运行 skype 时遇到了问题,但使用 optirun 时运行正常。我只需将桌面文件更改为每次都使用 optirun 即可,然后就解决了!

相关内容