Fedora 19 使用 rpmfussion 的 NVIDIA 驱动程序:libGL 错误:加载驱动程序失败:swrast

Posted

技术标签:

【中文标题】Fedora 19 使用 rpmfussion 的 NVIDIA 驱动程序:libGL 错误:加载驱动程序失败:swrast【英文标题】:Fedora 19 using rpmfussion's NVIDIA driver: libGL error: failed to load driver: swrast 【发布时间】:2014-03-06 12:22:45 【问题描述】:

在我的 Fedora 19 机器上运行使用 Qt 4.7 的应用程序时,我从应用程序中收到以下错误:

libGL: screen 0 does not appear to be DRI2 capable
libGL: OpenDriver: trying /usr/lib64/dri/tls/swrast_dri.so libGL: OpenDriver: trying /usr/lib64/dri/swrast_dri.so 
libGL: Can't open configuration file /home/Matthew.Hoggan/.drirc: No such file or directory. 
libGL error: failed to load driver: swrast ERROR: Error failed to create progam.

我没有在使用 glx 配置上下文的股票 X11 应用程序中看到这些错误。我假设这是因为 Qt 在下面使用 egl。在运行他们的多维数据集示例时,使用来自 http://malideveloper.arm.com/develop-for-mali/tools/opengl-es-3-0-emulator/ 的 EGL 3 模拟器也会发生同样的事情。

我已经验证 xorg-x11-drv-nvidia-libs.i686 和 yum install xorg-x11-drv-nvidia-libs.x86_64 rpms 都已安装。

我的系统信息是:

Linux localhost.localdomain 3.11.9-200.fc19.x86_64 #1 SMP Wed Nov 20 21:22:24 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

而 glxinfo 是:

[Matthew.Hoggan@localhost QtTest]$ glxinfo | grep version
server glx version string: 1.4
client glx version string: 1.4
GLX version: 1.4
OpenGL core profile version string: 4.3.0 NVIDIA 331.38
OpenGL core profile shading language version string: 4.30 NVIDIA via Cg compiler
OpenGL version string: 4.4.0 NVIDIA 331.38
OpenGL shading language version string: 4.40 NVIDIA via Cg compiler

这里有什么建议还是需要更多信息?

【问题讨论】:

您首先尝试使用 EGL 有什么原因吗?您显然在该系统上安装了 X 服务器和 GLX,回退到 EGL/GLES 的软件光栅化器几乎没有任何意义。此外,如果您使用 NV 的专有驱动程序,它们会实现GL_EXT_glx_create_Context_e2_profile。它不会让您获得 EGL,但从功能上讲,您将拥有相当于伪 ES2 实现的东西。 是的,我的工作环境需要它。默认情况下,这就是 Qt 使用的。在我在工作环境之外编写的应用程序中,我已经有了一个可以交换 wgl end glx 函数的跨平台解决方案。 我在 F20 上遇到了同样的问题。我也遇到了屏幕闪烁的问题,我怀疑这些问题是相关的。 在 VMWare VM 中运行的 F20 完全相同的问题 【参考方案1】:

我们能够摆脱同样使用 Qt 的 octave-4.0.0-rc1 的相同错误消息。可以在here找到错误搜索历史。

原来是共享库 (.so) 中的不正确的运行路径。运行路径包含 /usr/lib64。因此在运行时加载了 /usr/lib64/libGL.so,而不是正确的 nvidia /usr/X11R6/lib64/libGL.so。

解决方法

    使用ldd <app or lib>chrpath -l <app or lib> 查找运行路径不正确的库或可执行文件 使用chrpath -r <correct path> <app or lib>将错误的路径替换为正确的路径(没有违规的/usr/lib64) 以下单行代码为 liboctgui.so 执行此操作。只需将“liboctgui.so”替换为您的值即可。 chrpath -r $(chrpath -l liboctgui.so | cut -d '=' -f '2' | awk 'gsub(/\/usr\/lib64/, ""); 1') liboctgui.so

产地

错误的运行路径是在编译时从无关的 -L/usr/lib64 在位于 /usr/lib64 的 libQt*.la 文件中。 comment #18 解释了错误的原因。

事实上,lib*.la 文件不应该被打包,根据OpenSUSE own recommendations

避免打包 libtool 配置文件(.la 文件)。如果你不 打包一个静态库,如果您还放置共享 标准搜索目录中的库(即 %_lib、/usr/%_lib),它们 不需要。

从 /usr/lib64 中删除 lib*.la 并重建解决了问题。

【讨论】:

以上是关于Fedora 19 使用 rpmfussion 的 NVIDIA 驱动程序:libGL 错误:加载驱动程序失败:swrast的主要内容,如果未能解决你的问题,请参考以下文章

Fedora 19关闭防火墙

在vim中配置python补全,fedora 19

Install Adobe Flash Player 11.2 on CentOS/RHEL 7/6/5, Fedora 20/19

使用 python 2.7 让 python Numba 在 Ubuntu 14.10 或 Fedora 21 上工作

fedora27安装ssh

Linux下禁用rm命令之建立回收站 -- 2019-08-11 19:13:54