我的平台是fedora 21 x64,QT 5.4 qtcreator 3.3.0
我的显卡是NVS4100并安装支持OpenGl的NVIDIA驱动程序。
...经过一些调查后,我发现QProcess ::开始使用qtcreator将/ usr / lib64添加到环境中的LD_LIBRARY_PATH,这会破坏链接器指示的正确本地化(使用命令ldd)(libGL.so.1 => / usr /lib64/nvidia/libGL.so.1(0x00007fe25ca7d000ich
我怎么能改变那个?所有尝试从qtcreator更改LD_LIBRARY_PATH失败,Qprocess :: start追加/ usr / lib64在它面前?
我在以下错误报告中找到了基本问题的答案:
https://bugreports.qt.io/browse/QTCREATORBUG-8727
显然,Qt需要修复名为DesktopQmakeRunConfiguration的函数/方法。
使用OpenSuse 42.1和Qt Creator 5时出现相同的错误。使用社区NVidia repo更新视频驱动程序后出错。显然,如果您使用64位Linux发行版,则只会出现此错误。我能够通过编辑QT Creator中的LD_LIBRARY_PATH从/ usr / lib64到/ usr / lib来修复它
我对fedora 19 x64和Qt 5.3.2也有同样的问题。
libGL错误:无法加载驱动程序:swrast
正如您所指出的,LD_LIBRARY_PATH似乎搞乱了正确库的本地化(/usr/lib64/libGL.so.1而不是/usr/lib64/nvidia/libGL.so.1)。
在我的情况下,这是由以下行在我的.pro文件中添加外部库引起的:
unix:!macx:LIBS + = -L / usr / lib64 -lrt
为了避免模糊路径并解决问题,我指定了我需要链接的库的名称:
unix:!macx:LIBS + = -L / usr / lib64 / librt.so -lrt
在此之后,libGL错误消失了! (我仍然能够与librt.so链接)
在openSUSE 13.2上
我可以在项目的“运行配置”中更改“LD_LIBRARY_PATH”,或者在“设置>选项>运行>运行>套件>环境”中更常见的地方更改“LD_LIBRARY_PATH”,或者更改为AMD专有驱动程序“libGL”的路径。所以“:”/ usr / X11R6 / lib64 /“并且openGL程序运行没有错误。
当我从Macbook Pro进入我的Ubuntu VM时遇到了同样的问题。在我的Ubuntu 16.04 64位操作系统上安装以下驱动程序为我解决了这个问题。希望这有助于某人。
sudo apt-get install nvidia-331
我在Arch Linux上遇到过类似的问题。上述错误阻止程序启动:
libGL错误:找不到匹配的fbConfigs或视觉效果
libGL错误:无法加载驱动程序:swrast
在我的案例中可行的快速解决方案是LD_PRELOAD正确的库:
$ LD_PRELOAD='/usr/lib/nvidia/libGL.so' <program>
/usr/lib/nvidia/libGL.so指向正确的libGL:
$ namei /usr/lib/nvidia/libGL.so
f: /usr/lib/nvidia/libGL.so
d /
d usr
d lib
d nvidia
l libGL.so -> libGL.so.1
l libGL.so.1 -> libGL.so.340.107
- libGL.so.340.107
$ file /usr/lib/nvidia/libGL.so.340.107
/usr/lib/nvidia/libGL.so.340.107: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, stripped