Win10 linux子系统libGL错误:未找到匹配的fbConfigs或visuals libGL错误:无法加载驱动程序:swrast

Win10 linux子系统libGL错误:未找到匹配的fbConfigs或visuals libGL错误:无法加载驱动程序:swrast

我并不是真的在问问题,但是这个___网站不允许我以任何其他方式这样做。

今天在 Win10 的 Linux 子系统(具体来说是 Ubuntu 18.04)下使用 GTK 时遇到了一个问题。错误消息是:

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

其他人在使用 Steam 时遇到了这个问题,这里提供一些答案:Steam libGL 错误第二个答案“Windows Subsystem for Linux (WSL) 有同样的错误”引导我找到了解决方案,但是这个答案并不是开箱即用的。

他们的答案涉及一个目录/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1。该目录在我的系统中不存在,但我将在我的答案(对我自己)中提供对我的词干有效的解决方案。

我知道用这种方式回答这个问题非常笨拙。但是,我觉得回答这个问题很重要,因为我花了很长时间才找到一个适合自己的答案,其他人可能也有同样的问题。我无法对原始问题留下答案,因为它已被关闭;我无法对引导我找到解决方案的答案发表评论,因为我没有足够的声誉。我也不能在元问题上发帖。你能说“第 22 条军规”吗?我知道你能。

答案1

将 LIBGL_ALWAYS_INDIRECT 变量添加到 /etc/bash.bashrc 解决了我的错误。

export LIBGL_ALWAYS_INDIRECT=1

不知道实际用途是什么。但可能有用,因为 XLauch confg 说它需要这个。

我的错误发生在从 wsl2 调用 emacs 并在 XLauch (vcxsrv) 中显示时:

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

我根据以下方法找到解决方案:

答案2

再次,我为回答我自己的问题表示抱歉,但这似乎是提出问题答案的唯一方法,正如我在问题中详细说明的那样。

在我的 Win10 Linux Ubuntu 子系统上,mesa 驱动程序位于此目录中:/usr/lib/x86_64-linux-gnu/;与上面链接的答案不同,没有 Mesa(或 mesa,或...)子目录。所以我在其他地方创建了一个 tmp 目录,并将 mesa 驱动程序(两个,加上两个链接)移动到该 tmp 目录。现在我的基于 GTK 的应用程序可以运行了。

两个驱动程序是/usr/lib/x86_64-linux-gnu/libEGL_mesa.so.0.0.0/usr/lib/x86_64-linux-gnu/libGLX_mesa.so.0.0.0;两个链接是/usr/lib/x86_64-linux-gnu/libEGL_mesa.so.0/usr/lib/x86_64-linux-gnu/libGLX_mesa.so.0。移动文件的 cmd 是sudo mv /usr/lib/x86_64-linux-gnu/*mesa* tmp/(确保 tmp/ 目录不在库文件所在的位置)。

我没有声明 mesa 驱动程序是否需要用于其他用途,这就是我将它们移动到 tmp/ 目录而不是删除它们的原因。但移动它们之后,我的 GTK 应用程序就可以正常工作了。

答案3

如果你通过 UI 配置 Xlaunch,请在附加参数中添加-nowgl

-[no]wgl
    Enable the GLX extension to use the native Windows WGL interface for hardware-accelerated OpenGL

答案4

对我来说,移动库没有帮助。但是,更新台面司机做到了。

验证问题是否存在的简单方法是运行glxinfo | grep "OpenGL version"

然后关注安装指南有正确的台面我的 Ubuntu 16.04(WSL)的 repo。

更新后,你可以使用以下方式进行验证glxinfo问题就消失了。

相关内容