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