加载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