当前位置: 首页>>技术教程>>正文


加载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的软链接。

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

S O U R C E

第二,我做了什么

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。它也不应该影响你的大黄蜂配置,尽管在你完成之后显然值得检查。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1627.html,未经允许,请勿转载。