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

pus*_*pop 51 updates nvidia opengl drivers

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

libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
Run Code Online (Sandbox Code Playgroud)

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

..但是当我得到新的更新时 - 这个错误又回来了;(我该怎么办?这不是解决方案 - 不使用系统更新......

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

dem*_*hog 33

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

find /usr -iname "*libGL.so*" -exec ls -l -- {} + 
Run Code Online (Sandbox Code Playgroud)

现在问题的可能原因是安装图形驱动程序有时会破坏这些符号链接。(具体来说/usr/local/lib/libGL.so.1.2.0很可能是错误的 lib 或错误链接的符号链接)(注意我不久前写了这个。libGL.so.1.2.0 是当前的 gl 版本,现在可能是其他版本)。

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

LIBGL_DEBUG=verbose glxgears
Run Code Online (Sandbox Code Playgroud)

希望这会以与 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
Run Code Online (Sandbox Code Playgroud)

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

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

  • 我理解每一部分,除了“几乎肯定是/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”和所有这些文件存在于我的系统中... (6认同)

小智 9

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

经过很少的尝试,这解决了我的蒸汽和葡萄酒无法启动的问题:

sudo apt install libnvidia-gl-418:i386
Run Code Online (Sandbox Code Playgroud)

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

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


Adr*_*ian 5

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

此处概述。

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

首先卸载目前通过打开一个终端窗口安装的任何NVIDIA驱动(Ctrl+ ALT+ T)和打字

sudo apt-get remove nvidia*
Run Code Online (Sandbox Code Playgroud)

重新启动系统

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

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
Run Code Online (Sandbox Code Playgroud)

然后再次重启

我在迷失符号链接后尝试了它,并且在安装驱动程序后蒸汽立即运行良好,并且在我有 400 多兆的系统更新后它仍然可以正常工作。

  • 我不建议在安装驱动程序后离开 xorg-edgers ppa。许多不稳定的软件包会在更新中出现。 (2认同)

ale*_*exg 5

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

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

这一个班轮为我工作:

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib32/nvidia-340"
Run Code Online (Sandbox Code Playgroud)