我并不是真的在问问题,但是这个___网站不允许我以任何其他方式这样做。
今天在 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