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


在网上搜索解决方法,找到的方案一:执行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 10月 24 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 这行注释符#删除,重启系统,警告消除。

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

  1. Ubuntu 22.04 中的 .NET 6

    .NET 6 现在包含在 Ubuntu 22.04 (Jammy) 中,只需 apt install dotnet6 即可安装.此更改是 Ubuntu 用户的一项重大改进和简化.我们还发布了带有 Ch ...

  2. Ubuntu 22.04​下加快rust的编译速度

    在学习Rust的时候,相信不少人和我一样一直受Rust编译慢的问题困扰.最近阅读一篇写得相当不错的英文博客<Tips for Faster Rust Compile Times>,加上最近 ...

  3. 【Qt】Qt5.12版本编译Oracle驱动教程

    00. 目录 文章目录 00. 目录 01. Qt5.12安装 02. Qt安装注意事项 03. Qt版本和Oracle安装路径说明 04. Qt5.12编译Oracle驱动(使用MinGW 64位) ...

  4. Ubuntu 22.04 x86_64 OVF (sysin)

    Ubuntu 22.04 LTS (GNU/Linux 5.15.0-25-generic x86_64) 请访问原文链接:https://sysin.org/blog/ubuntu-2204-ovf ...

  5. 抢先体验 Ubuntu 22.04 Jammy Jellyfish

    距离4月21日 Ubuntu 22.04 正式发布越来越近,为了家里的各种 Ubuntu 设备能够安心升级,我决定提前体验接近完成的测试版. 本文提到的升级方式适用于 Desktop 桌面版和 Ser ...

  6. Ubuntu 22.04 LTS 是史诗级的版本?

    导读 Canonical 最新的代号为"Jammy Jellyfish"的 Ubuntu LTS 版本,受到全球用户的好评.有数百个新的小功能和一些不太大众化的功能并没有引起太多关 ...

  7. 为什么说 Ubuntu 22.04 LTS 是史诗级的版本

    下面是 Ubuntu 22.04 LTS 的一些次要特性,这些特性使它成为迄今为止最好的 LTS 版本之一. Canonical 最新的代号为"Jammy Jellyfish"的 ...

  8. Ubuntu 22.04下载安装VMware Workstation Pro 17

    Ubuntu 22.04下载安装VMware Workstation Pro 17 一.下载 打开浏览器,访问VMware的官方网站:https://www.vmware.com 页面打开后,点击菜单 ...

  9. Ubuntu 22.04操作系统下常用软件备忘

    时间过得真快,不知不觉间Ubuntu的桌面版本已经到了22.04.本文记录我在Ubuntu 22.04下使用的部分软件,一方面供刚开始使用Ubuntu系统的朋友们参考,另外就是方便自己以后重装系统.下 ...

最新文章

  1. stylegan2 示例命令fused_bias_act.cu环境配置异常(无法打开包括文件: “tensorflow/core/framework/op.h”
  2. IOS面试经常被问到的问题
  3. python 格式化时间
  4. carthage update --no-use-binaries --platform mac,ios
  5. 获取android的SDK或者手机目录路径
  6. python绘制饼图的列表有none_python 有没有库或者函数,类似R的corrplot,画相关系数图的时候,每个方框里面为饼图?...
  7. 郑州计算机技校哪个学校好,郑州十大技校排名 详细介绍
  8. 第一名数据科学工作冠状病毒医生
  9. 常用前端代码资源(转)
  10. 团队转会名单(22日改)
  11. js json数组_JaveScript对象篇和数组篇
  12. 更新智能开发研发进度
  13. 贺利坚老师汇编课程70笔记:端口的读写
  14. handler更新ui线程的基本用法
  15. 上传文件_Spring Boot文件上传
  16. XMPP tigase 8.0 与 strophe.js 测试Web聊天服务/即时通信
  17. 老饼教你深入浅出理解-《牛顿法求极值》
  18. 计算机雕刻教学设计,综合实践《果蔬雕刻》教学设计第一课时
  19. 【微信公众号-订阅号发送群发消息】
  20. 常见For 循环优化方式总结——提高效率小妙招

热门文章

  1. 好看视频上传软件批量发布视频讲解
  2. 内容生态与新业务双突破,汽车之家反转逻辑将延续
  3. 如何才能让手机厂商主动拥抱华为,接入鸿蒙系统?
  4. Burpsuite专题学习指南
  5. 面试官:反射都不会,还敢说自己会Java?
  6. VB6里判断是否64位系统
  7. 关于reverse函数
  8. FANUC机器人_通过ROBOGUIDE从零开始做一个离线仿真项目(1)
  9. 米家机扫拖机器人说明书_【米家扫拖机器人1C怎么样使用体验】动态导航|缓冲模块|电控水箱|红外发射|APP_摘要频道_什么值得买...
  10. iStylePDF产品综合解决方案之电子合同在线订立