在我的 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。使用 EGL 3 模拟器时也会发生同样的情况http://malideveloper.arm.com/develop-for-mali/tools/opengl-es-3-0-emulator/在运行他们的立方体示例时。
我已经验证 xorg-x11-drv-nvidia-libs.i686 和 yum install xorg-x11-drv-nvidia-libs.x86_64 rpm 均已安装。
我的系统信息是:
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
这里有什么建议或者需要更多信息吗?
我们能够消除同样使用 Qt 的 Octave-4.0.0-rc1 的相同错误消息。可以找到错误搜寻历史记录here.
原来是一个不正确的运行路径在共享库 (.so) 中。运行路径包含 /usr/lib64。因此,在运行时加载了 /usr/lib64/libGL.so,而不是正确的 nvidia /usr/X11R6/lib64/libGL.so。
解决方法
- 查找运行路径不正确的库或可执行文件
ldd <app or lib>
and chrpath -l <app or lib>
- 使用正确的路径替换错误的路径(不包含有问题的 /usr/lib64)
chrpath -r <correct path> <app or lib>
以下一行代码为 liboctgui.so 执行了此操作。只需将“liboctgui.so”替换为您的值即可。chrpath -r $(chrpath -l liboctgui.so | cut -d '=' -f '2' | awk '{gsub(/\/usr\/lib64/, "")}; 1') liboctgui.so
Origin
编译时从不相关的运行路径中获取了不正确的运行路径-L/usr/lib64
in libQt*.la
文件位于 /usr/lib64 中。
这评论#18解释了为什么它是错误的。
确实,lib*.la
根据规定,文件不应打包OpenSUSE 自己的建议
避免打包 libtool 配置文件(.la 文件)。如果你不
打包一个静态库,如果您还放置共享
标准搜索目录中的库(即 %_lib、/usr/%_lib),它们
将不需要。
去除lib*.la
来自 /usr/lib64 并重建很好地解决了问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)