libGl,fbConfigs的问题在每次更新时都会大肆宣传吗?


38

编译SFML-project时出现问题(看不到任何图形):

libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast

可以通过以下教程简单地重新安装nvidia驱动程序来解决此错误:https : //askubuntu.com/a/451248/341889

..但是当我获得新的更新时-此错误返回;(我该怎么办?这不是解决方案-不使用系统的更新...

PS,是的,我在安装nvidia驱动程序后保存了所有更改


1
这发生在我身上,如果我尝试推出一个OpenGL可执行文件动态加载台面libGL.soLD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/mesa ./glprogram。默认情况下,/usr/lib/nvidia-361/libGL.so由于我的Ubuntu 16.04使用/etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf它,因此一切正常。
Ciro Santilli新疆改造中心法轮功六四事件

Answers:


29

swrast事情是软件渲染器。这意味着它没有找到图形卡的硬件驱动程序。安装了一堆libGL库,以及到这些库的一堆符号链接。要查看这些内容,请从外壳程序中运行:

find /usr -iname "*libGL.so*" -exec ls -l -- {} + 

现在,可能是您出现问题的原因是,安装图形驱动程序有时会破坏这些符号链接。(特别/usr/local/lib/libGL.so.1.2.0可能是错误的lib或指向错误链接的符号链接)。

要确定OpenGL程序试图运行的库,您可以打开一些详细信息并运行一个简单的OpenGL程序。您可以使用标准的OpenGL测试程序来验证这一点:

LIBGL_DEBUG=verbose glxgears

希望这将以与SFML相同的方式失败。有了LIBGL_DEBUG它应该告诉你什么OpenGL库它试图加载。此外,几乎可以肯定要尝试加载的/usr/local/lib/libGL.so.1.2.0库(编辑:这是我回答此书时机器上的标准OpenGL库。现在很可能是机器上的其他版本)。

因此解决方案(在这种情况下)是确保这/usr/local/lib/libGL.so.1.2.0是指向正确的OpenGL库的符号链接。就我而言,我拥有Nvidia 3.40驱动程序,因此我运行了:

ln -s /usr/lib/nvidia-340/libGL.so.1 /usr/local/lib/libGL.so.1.2.0

但是,您需要将其指向适合您的OpenGL库(在第一个find命令中列出)。

总结:安装(专有)图形驱动程序可能会中断用于OpenGL库的符号链接。要解决此问题,请手动修复符号链接(/usr/local/lib/libGL.so.1.2.0先修复)。


这个问题帮助我了解了错误消息,但没有解决。“重新安装nvidia驱动程序”答案是一个很好的补充,因为它实际上为我解决了该问题。
henko 2015年

@henko是,重新安装nvidia驱动程序可能是解决这一问题的最快,最简单的方法。如果由于某种原因重新安装驱动程序不能解决问题,并且需要动手,请退回到该方法。
痴呆的刺猬

6
我理解每个部分,但“几乎可以肯定是/usr/local/lib/libGL.so.1.2.0”。我的显示“ libGL:OpenDriver:尝试/usr/lib/x86_64-linux-gnu/dri/tls/swrast_dri.so libGL:OpenDriver:尝试/usr/lib/x86_64-linux-gnu/dri/swrast_dri.so”和所有这些文件存在于我的系统中...
Samuel Li

1
再次感谢您的解释;我对这个问题了解得更多。我还想指出,就我而言,ubuntu swrast.so中存在一个已确认的错误,并且人们一直在讨论它。
Samuel Li

1
谢谢@dementedhedgehog这是一篇表达清楚的文章,并帮助我解决了我的问题(顺便说一下,在Fedora-25上)。= :)。投票赞成。
NYCeyes

5

我在Ubuntu 16.10上使用nvidia-340驱动程序遇到了同样的问题,这里的解决方案都不适合我。

原来32位库不在库路径上。

这条班轮为我工作:

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib32/nvidia-340"

4

我在获取正确的符号链接以指向nVidia驱动程序时遇到了问题,我发现了另一种对我有用的方法。

在这里概述。

并且列出了如何通过PPA安装nVidia驱动程序,该驱动程序可用于最新版本349.16。

首先通过打开终端窗口(Ctrl+ ALT+ T)并键入以下命令来卸载当前安装的所有nVidia驱动程序

sudo apt-get remove nvidia*

重新启动系统

然后打开另一个终端并输入以下内容

sudo add-apt-repository ppa:xorg-edgers/ppa
sudo apt-get update
sudo apt-get install nvidia-349 nvidia-settings
sudo add-apt-repository -r ppa:xorg-edgers/ppa

然后再次重启

我在失去符号链接后尝试了此操作,并且在安装驱动程序后,steam可以正常工作,并且在进行了400兆兆的系统更新后,它仍然可以正常工作。


2
安装驱动程序后,我不建议离开xorg-edgers ppa。许多不稳定的软件包将在更新中出现。
试点

仅仅删除nvidia *已经为我解决了这个问题!
xtofl

3

为替代Adrian的答案:如果您更喜欢直接使用NVIDIA提供的专有驱动程序,而不是PPA中的专有驱动程序,则安装(或者在我的情况下,重新安装)最新的专有驱动程序可以帮助消除错误。

如果您还没有NVIDIA驱动程序,请从NVIDIA网站下载驱动程序。接下来,切换到tty(ctrl+ alt+ F1)并关闭您的登录管理器:

如果使用lightdm, $ sudo service lightdm stop

如果使用gdm, $ sudo service gdm stop

导航到安装脚本并运行它,然后按照提示进行操作。如果预安装脚本失败,请不要担心。我始终接受注册DKMS和32位兼容性库。安装驱动程序后,重新启动计算机:

$ sudo reboot

如果您已经具有来自较早NVIDIA驱动程序的安装脚本,只需按照上面所述运行NVIDIA驱动程序安装脚本,但使用“ --update”选项即可:

$ sudo ./NVIDIA-Linux-x86_64-***.**.run --update

这将为您提供最新版本的驱动程序。

这样做解决了我的libGL error: failed to load driver: swrast错误。


3

在ubuntu 18上也遇到了同样的问题。这基本上只发生在32位应用程序上。所以我的想法是安装32位nvidia,因为我的/ usr / lib / i386-linux-gnu /文件夹可疑是空的。

经过极少的尝试,这解决了我的蒸汽和红酒无法开始的问题:

sudo apt install libnvidia-gl-418:i386

(并将418更改为您拥有的任何版本)

有趣的是,应用程序没有抱怨安装过程中缺少依赖项。


这似乎已经解决了我与该问题有关的一个问题,至少……
安德鲁·

这可能是32位。其他程序可以正常工作,但可能是64位。尽管如此,这仍然可以正常工作(尽管我不得不修改版本)
Zoe

2

我必须承认,我不确定为什么这对我有用,但确实如此。在这种特殊情况下,通过添加新条目来“修复” ld.so.conf.d条目,如下所示:

sudo ln -s /usr/lib/nvidia-381/ld.so.conf /etc/ld.so.conf.d/nvidia64.conf
sudo ldconfig 

直到您运行以下命令,这才有意义find

$ find -L /etc/ld.so.conf.d -type f | xargs grep -i nvidia
/etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf:/usr/lib/nvidia-381
/etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf:/usr/lib32/nvidia-381
/etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf:/usr/lib/nvidia-381
/etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf:/usr/lib32/nvidia-381
/etc/ld.so.conf.d/nvidia64.conf:/usr/lib/nvidia-381
/etc/ld.so.conf.d/nvidia64.conf:/usr/lib32/nvidia-381

为什么相同的条目一式三份起作用,但不能重复出现,我不知道!


在Ubunu 17.04上为我工作。请注意-路径是/ usr / lib / nvidia-xxx,其中xxx是驱动程序编号,因此请对该命令进行调整。
user2082382

2

这是一个apt对我有用的唯一解决方案,没有符号链接或与之混为一谈ld.so.conf.d

apt install --reinstall libgl1-mesa-glx:i386
apt install mesa-utils nvidia-driver nvidia-driver-libs-i386

1

我只用这行:

 sudo rm /usr/lib/i386-linux-gnu/libGL.so.1

而且有效。

因为执行时看到这样的输入sudo ldconfig -p | grep -i gl.so

libwayland-egl.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libwayland-egl.so.1
libcogl.so.20 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libcogl.so.20
libOpenGL.so.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libOpenGL.so.0
libOpenGL.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libOpenGL.so
libGL.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGL.so.1
libGL.so.1 (libc6) => /usr/lib/i386-linux-gnu/libGL.so.1
libGL.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGL.so
libEGL.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libEGL.so.1
libEGL.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libEGL.so

1
人们应该遵循这意味着什么吗?
安德鲁

为我工作,谢谢!
赫特

0

只需运行:

sudo apt-get install libnvidia-gl-(the version of your driver):i386

驱动程序的版本显示在nvidia设置中。


-3

从Macbook Pro SSH到Ubuntu VM时,我遇到了这个奇怪的问题,但是在Ubuntu 16.04上安装以下Nvidia驱动程序可以解决此问题。希望这对您有用。

须藤apt-get install nvidia-331


1
为什么要在VM guest虚拟机系统上安装Nvidia GPU驱动程序?O_O
大卫·福斯特

否决票不合适。@DavidFoerster是正确的,因为在VM中安装GPU驱动程序没有任何意义(除非您将GPU硬件传递给VM)。但是:我正在通过SSH运行X,并且遇到了同样的问题。在远程计算机(VM)上启动X应用程序几乎总是会导致OP问题中提到的错误消息。我还没有找到解决这一问题还没有,但如果在远程VM安装GPU驱动程序是解决方案,我会做它,不管它是否有道理,只是为了让该错误走开(我目前忽略它们)。
比纳罗斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.