在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配置上下文的stock 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
此处有任何建议或需要更多信息吗?
答案 0 :(得分:2)
我们能够摆脱使用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做了这个。只需替换&#34; liboctgui.so&#34;靠你的价值。
chrpath -r $(chrpath -l liboctgui.so | cut -d '=' -f '2' | awk '{gsub(/\/usr\/lib64/, "")}; 1') liboctgui.so
在编译时从不相关的地方拾取了错误的运行路径
位于/ usr / lib64中的-L/usr/lib64
个文件中的libQt*.la
。
comment #18解释了为什么它是错误的。
事实上,根据OpenSUSE own recommendations
,lib*.la
文件不应打包
避免打包libtool配置文件(.la文件)。如果你不 打包一个静态库,如果你也放置了共享 它们是标准搜索目录中的库(即%_lib,/ usr /%_ lib) 不需要。
从/ usr / lib64中删除lib*.la
并重建以解决问题。