Ubuntu 22.04 Qt5.12.9编译出现“cannot find -lGL”解决

在Linux系统下安装好Qt5,打开Qt Creator新建一个最简单的工程,编译却出现"cannot find -lGL"错误。

:-1: error: cannot find -lGL: No such file or directory
在网上搜索解决方法,找到的方案一:执行apt-get install libglu1-mesa-dev

glen@ubuntu:~/linux/Qt$ sudo apt-get install libglu1-mesa-dev
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成                 
有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是
因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件
包尚未被创建或是它们已被从新到(Incoming)目录移出。
下列信息可能会对解决问题有所帮助:

下列软件包有未满足的依赖关系:
 libglu1-mesa-dev : 依赖: libglu1-mesa (= 9.0.1-1build1) 但是 9.0.2-1 正要被安装
                    依赖: libgl1-mesa-dev 但是它将不会被安装 或
                            libgl-dev 但是它将不会被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

发现提示信息中依赖libgl1-mesa-dev,于是执行apt-get install libglu1-mesa-dev

glen@ubuntu:~/linux/Qt$ sudo apt-get install libgl1-mesa-dev
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成                 
有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是
因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件
包尚未被创建或是它们已被从新到(Incoming)目录移出。
下列信息可能会对解决问题有所帮助:

下列软件包有未满足的依赖关系:
 libgl-dev : 依赖: libgl1 (= 1.3.2-1~ubuntu0.20.04.2) 但是 1.4.0-1 正要被安装
             依赖: libglx-dev 但是它将不会被安装
 libglvnd-dev : 依赖: libglvnd0 (= 1.3.2-1~ubuntu0.20.04.2) 但是 1.4.0-1 正要被安装
                依赖: libegl-dev (>= 1.3.0-1) 但是它将不会被安装
                依赖: libgles-dev (>= 1.3.0-1) 但是它将不会被安装
                依赖: libglx-dev (>= 1.3.0-1) 但是它将不会被安装
                依赖: libopengl-dev (>= 1.3.0-1) 但是它将不会被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

问题也没解决。搜索发现aptitude命令并尝试安装libglu1-mesa-dev

glen@ubuntu:~/linux/Qt/build-Test-GLEN_IMX6U-Debug$ sudo aptitude install libglu1-mesa-dev
下列“新”软件包将被安装。         
  libglu1-mesa-dev{b} 
0 个软件包被升级,新安装 1 个,0 个将被删除, 同时 1 个将不升级。
需要获取 207 kB 的存档。解包后将要使用 998 kB。
下列软件包存在未满足的依赖关系:
 libglu1-mesa-dev : 依赖: libglu1-mesa (= 9.0.1-1build1) 但是 9.0.2-1 已安装
                    依赖: libgl1-mesa-dev 但它是不可安装的 或者
                            libgl-dev 但它是不可安装的
下列动作将解决这些依赖关系:

     保持 下列软件包于其当前版本:
1)     libglu1-mesa-dev [未安装的]



是否接受该解决方案?[Y/n/q/?] y
将不会安装,升级或者删除任何软件包。
0 个软件包被升级,新安装 0 个,0 个将被删除, 同时 1 个将不升级。
需要获取 0 B 的存档。解包后将要使用 0 B。
                                 
当前状态:80422 (+2) new。

问题仍没有解决,于是想到是不是Ubuntu版本太高了,想降级到Ubuntu18.04,结果也失败了。有些不甘心重装系统,重新搜索cannot find -lGL,找到了这篇文章 https://www.jianshu.com/p/e1b2511c7cda ,即方案二:搜索系统中已经存在的libgl1-mesa-dev相关文件,使用find /usr -name libGL*命令搜索(libgl1-mesa-dev是有关OpenGL的库)

glen@ubuntu:~/linux/Qt$ find /usr -name libGL*
/usr/share/code/libGLESv2.so
/usr/lib/libGL.so.bak
/usr/lib/x86_64-linux-gnu/libGLESv2.so.2.1.0
/usr/lib/x86_64-linux-gnu/libGL.so.1
/usr/lib/x86_64-linux-gnu/libGLU.so.1.3.1
/usr/lib/x86_64-linux-gnu/libGLX_mesa.so.0.0.0
/usr/lib/x86_64-linux-gnu/libGLX.so.0.0.0
/usr/lib/x86_64-linux-gnu/libGLX_indirect.so.0
/usr/lib/x86_64-linux-gnu/libGLESv2.so.2
/usr/lib/x86_64-linux-gnu/libGL.so.1.7.0
/usr/lib/x86_64-linux-gnu/libGLU.so.1
/usr/lib/x86_64-linux-gnu/libGLX.so.0
/usr/lib/x86_64-linux-gnu/libGLX_mesa.so.0
/usr/lib/x86_64-linux-gnu/libGLdispatch.so.0.0.0
/usr/lib/x86_64-linux-gnu/libGLdispatch.so.0

搜索结果中发现/usr/lib/x86_64-linux-gnu/libGL.so.1文件(这个文件也可能在另一个目录中)。然后使用ln -s /usr/lib/x86_64-linux-gnu/libGL.so.1 /usr/lib/libGL.so命令给已存在的库文件创建一个链接到/usr/lib目录。

glen@ubuntu:~/linux/Qt$ ln -s /usr/lib/x86_64-linux-gnu/libGL.so.1 /usr/lib/libGL.so
glen@ubuntu:~/linux/Qt$ ls /usr/lib/libGL.so -ll
lrwxrwxrwx 1 root root 36 1024 22:54 /usr/lib/libGL.so -> /usr/lib/x86_64-linux-gnu/libGL.so.1

然后在Qt Creator中再次编译工程,错误消失。
编译成功,运行不过编译出现了以下警告:
Qt Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.

按如下修改:

sudo vi /etc/gdm3/custom.conf 
# GDM configuration storage
#
# See /usr/share/gdm/gdm.schemas for a list of available options.

[daemon]
# Uncomment the line below to force the login screen to use Xorg
# WaylandEnable=false

# Enabling automatic login
#  AutomaticLoginEnable = true
#  AutomaticLogin = user1

# Enabling timed login
#  TimedLoginEnable = true
#  TimedLogin = user1
#  TimedLoginDelay = 10

把 #WaylandEnable=false 这行注释符#删除,重启系统,警告消除。

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值