libGL error: No matching fbConfigs or visuals found

本文详细介绍了如何解决Qtcreator在启动时遇到的libGL错误,通过分析libGL.so.1的冲突原因,给出了具体的解决方案,包括删除和重新链接libGL.so.1。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天突然打不开Qtcreator了,运行qtcreator出现提示:

[xj@localhost ]$ qtcreator
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
Could not initialize GLX

上网找了一圈:有一个ubuntu的问答社区说需要删掉libGL.so.1。大概原因是mesa的libGL库和nvida的冲突了:https://askubuntu.com/questions/834254/steam-libgl-error-no-matching-fbconfigs-or-visuals-found-libgl-error-failed-t


Ubuntu 16.04+ For anyone still getting same error, if you are using nvidia driver, sometimes you will see that libGL.so.1 points to ambiguous libGL provided by both mesa and nvidia. To test this, you can run this command

$ sudo ldconfig -p | grep -i gl.so
The output was something like:

libwayland-egl.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libwayland-egl.so.1
libftgl.so.2 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libftgl.so.2
libcogl.so.20 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libcogl.so.20
libQt5OpenGL.so.5 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libQt5OpenGL.so.5
libQtOpenGL.so.4 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libQtOpenGL.so.4
libQtOpenGL.so.4 (libc6) => /usr/lib/i386-linux-gnu/libQtOpenGL.so.4
libOpenGL.so.0 (libc6,x86-64) => /usr/lib/nvidia-378/libOpenGL.so.0
libOpenGL.so (libc6,x86-64) => /usr/lib/nvidia-378/libOpenGL.so
libGL.so.1 (libc6,x86-64) => /usr/lib/nvidia-378/libGL.so.1
libGL.so.1 (libc6) => /usr/lib/i386-linux-gnu/mesa/libGL.so.1
libGL.so.1 (libc6) => /usr/lib32/nvidia-378/libGL.so.1
libGL.so (libc6,x86-64) => /usr/lib/nvidia-378/libGL.so
libGL.so (libc6) => /usr/lib32/nvidia-378/libGL.so
libEGL.so.1 (libc6,x86-64) => /usr/lib/nvidia-378/libEGL.so.1
libEGL.so.1 (libc6) => /usr/lib32/nvidia-378/libEGL.so.1
libEGL.so (libc6,x86-64) => /usr/lib/nvidia-378/libEGL.so
libEGL.so (libc6) => /usr/lib32/nvidia-378/libEGL.so

Now I just needed to remove the library provided by mesa and everything worked perfectly.

$ sudo rm /usr/lib/i386-linux-gnu/mesa/libGL.so.1
Update: This issue no longer exists from Ubuntu 18.04 LTS.


突然想到我前几天安装过SDL,是一个显示库,难道与libGL有关。。。。
于是我在我目录下查看一下,发现在/usr/lib 和/usr/lib64/ 的目录下都有libGL.so.1

[xj@localhost build]$ sudo find / -iname “*libGL.so*”
/usr/lib/libGL.so.1.0.0
/usr/lib/libGL.so.1
/usr/lib/libGL.so
/usr/lib64/libGL.so.1.0.0
/usr/lib64/libGL.so.1
/usr/lib64/libGL.so
/usr/lib64/libGL.so.1.2.0
分别查看:
[xiaojin@localhost build]$ ll /usr/lib/libGL.so.*
lrwxrwxrwx. 1 root root 14 6月 11 20:43 /usr/lib/libGL.so.1 -> libGL.so.1.0.0
-rwxr-xr-x. 1 root root 528708 6月 11 20:43 /usr/lib/libGL.so.1.0.0

[xiaojin@localhost build]$ ll /usr/lib64/libGL.so.*
lrwxrwxrwx. 1 root root 14 10月 31 11:31 /usr/lib64/libGL.so.1 -> libGL.so.1.2.0
-rwxr-xr-x. 1 root root 665712 6月 11 20:43 /usr/lib64/libGL.so.1.0.0
-rwxr-xr-x. 1 root root 480816 4月 12 2018 /usr/lib64/libGL.so.1.2.0

着重看这一条:

lrwxrwxrwx. 1 root root 14 10月 31 11:31 /usr/lib64/libGL.so.1 -> libGL.so.1.2.0

今天是2018.11.2。 就在几天前,我为了编译ffmpeg的ffplay,装了SDL:

yum install SDL2-devel

这个SDL是个显示库,安装SDL2-devel的时候yum自动为我安装了他的依赖(翻出前几天的安装提示):

正在安装:
SDL2-devel x86_64 2.0.8-5.el7 epel 251 k
为依赖而安装:
libwayland-client x86_64 1.14.0-2.el7 base 32 k
libwayland-server x86_64 1.14.0-2.el7 base 38 k
mesa-libGLES-devel x86_64 17.2.3-8.20171019.el7 base 57 k
为依赖而更新:
SDL2 x86_64 2.0.8-5.el7 epel 416 k
libdrm x86_64 2.4.83-2.el7 base 151 k
libdrm-devel x86_64 2.4.83-2.el7 base 128 k
mesa-libEGL x86_64 17.2.3-8.20171019.el7 base 96 k
mesa-libEGL-devel x86_64 17.2.3-8.20171019.el7 base 33 k
mesa-libGL x86_64 17.2.3-8.20171019.el7 base 156 k
mesa-libGL-devel x86_64 17.2.3-8.20171019.el7 base 157 k
mesa-libGLES x86_64 17.2.3-8.20171019.el7 base 25 k
mesa-libgbm x86_64 17.2.3-8.20171019.el7 base 38 k
mesa-libglapi x86_64 17.2.3-8.20171019.el7 base 43 k

答案就在这里!系统在安装mesa-libGL的时候把我的lib64/libGL.so.1软链指向了 lib64/libGL.so.1.2.0,这个文件的日期是4月份,跟usr/lib文件夹下面的libGL.so都不一样(是6月份安装的),我把 /usr/lib64/libGL.so.1 重新链接到了 /usr/lib64/libGL.so.1.0.0

sudo rm /usr/lib64/libGL.so.1
sudo ln -s /usr/lib64/libGL.so.1.0.0 /usr/lib64/libGL.so.1

现在打开qtcreator就完全没问题啦!

我现在宿主机是gazebo11,容器中的是gazebo7,“docker run -it --rm --net=host --name=usv_sim_test \ -v $HOME/catkin_ws:/root/catkin_ws/ \ -v $HOME/.uwsim:/root/.uwsim \ -v $HOME/.gazebo:/root/.gazebo \ -v $HOME/.ros:/root/.ros \ -v /tmp/.X11-unix:/tmp/.X11-unix \ --env="DISPLAY=$DISPLAY" \ --env="XDG_SESSION_TYPE=x11" \ --env="LIBGL_ALWAYS_INDIRECT=1" \ --env="QT_X11_NO_MITSHM=1" \ usv_sim bash”运行这个命令进入容器,运行roslaunch gazebo_ros empty_world.launch命令。报错“libGL error: No matching fbConfigs or visuals found libGL error: failed to load driver: swrast [ INFO] [1753006819.839590498]: Finished loading Gazebo ROS API Plugin. [ INFO] [1753006819.839901838]: waitForService: Service [/gazebo/set_physics_properties] has not been advertised, waiting... libGL error: No matching fbConfigs or visuals found libGL error: failed to load driver: swrast Error [parser.cc:581] Unable to find uri[model://sun] Error [parser.cc:581] Unable to find uri[model://ground_plane] [ INFO] [1753006825.583981226]: waitForService: Service [/gazebo/set_physics_properties] is now available. [ INFO] [1753006825.587330193, 0.001000000]: waitForService: Service [/gazebo/set_physics_properties] is now available. [ INFO] [1753006825.602925412]: Physics dynamic reconfigure ready. [ INFO] [1753006825.607386514, 0.020000000]: Physics dynamic reconfigure ready. Segmentation fault (core dumped) [gazebo_gui-3] process has died [pid 2181, exit code 139, cmd /opt/ros/kinetic/lib/gazebo_ros/gzclient __name:=gazebo_gui __log:=/root/.ros/log/22ecc86e-6553-11f0-8843-26f0ad91460e/gazebo_gui-3.log]. log file: /root/.ros/log/22ecc86e-6553-11f0-8843-26f0ad91460e/gazebo_gui-3*.log”
最新发布
07-21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值