libGl,fbConfigs的问题,每次更新都会出现问题?

编译SFML项目时遇到问题(看不到任何图形):

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

通过本教程简单地重新安装nvidia-drivers可以解决此错误: https : //askubuntu.com/a/451248/341889

..但是当我得到新的更新 – 这个错误正在返回;(我该怎么办?这不是解决方案 – 不使用系统的更新…

PS,是的,我在安装nvidia-drivers后保存了所有更改

swrast的是软件渲染器。 这意味着它没有为您的显卡找到硬件驱动程序。 安装了一堆libGL库以及一堆指向这些库的符号链接。 要查看这些从shell运行:

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

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

为了确定OpenGL程序试图运行的库,您可以开启一些冗长并运行一个简单的OpenGL程序。 您可以使用标准OpenGL测试程序validation这一点:

 LIBGL_DEBUG=verbose glxgears 

希望这会像SFML一样失败。 使用LIBGL_DEBUG它应该告诉你它正在尝试加载的OpenGL库。 此外,它将尝试加载的lib几乎肯定是/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驱动程序时遇到了问题,我找到了另一种适用于我的方法。

这里概述了 。

它列出了如何通过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 

然后重新启动

我在使用符号链接丢失后尝试了,并且在安装驱动程序后立即使用蒸汽正常工作,并且在我有400多个megs的系统更新之后它仍然工作。

我在使用nvidia-340驱动程序的Ubuntu 16.10上遇到了同样的问题,这里没有一个解决方案适用于我。

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

这个衬垫为我工作:

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

为了提供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错误。

我不得不承认,我不确定为什么这对我有用,但确实如此。 在这种特殊情况下,通过添加像这样的新条目“修复”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 

为什么一式三份的相同条目有效,但一式两份,我不知道!

这是一个apt我的解决方案,对ld.so.conf.d没有符号或乱码:

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

当我从我的Macbook Pro ssh到我的Ubuntu VM时,我遇到了这个奇怪的问题,但在我的Ubuntu 16.04上安装下面的Nvidia驱动程序解决了这个问题。 希望这对你有用。

sudo apt-get install nvidia-331