Linux Qt cannot find -lGL错误解决方案(亲测有效)
2年前 (2024-04-27)
对于很多 Linux 发行版本,Qt 安装完成后如果直接编译或者运行项目,会出现“cannot find -lGL”错误,如下图所示:

这是因为 Qt 找不到 OpenGL 的动态链接库(libGL.so)。在《Linux Qt安装》一节中我们说过,OpenGL 在大部分 Linux 发行版中都是默认安装的,包括 Ubuntu、CentOS 等,找不到该链接库一般都是路径不对。
Qt 默认在 /usr/lib/ 目录下查找动态链接库,但是很多 Linux 发行版将 OpenGL 链接库放在其它目录,例如我使用的是 CentOS 7,OpenGL 链接库位于 /usr/lib64/ 目录,而对于 Ubuntu,OpenGL 链接库位于 /usr/lib/i386-linux-gnu/mesa/ 目录。只要我们把 libGL.so 拷贝到 /usr/lib/ 目录,或者在 /usr/lib/ 目录下为 libGL.so 创建一个链接,就能解决问题。显然第二种办法更好。
另外,Linux 发行版自带的 OpenGL 链接库在后缀中添加了版本号,例如 libGL.so.1、libGL.so.1.2.0、libGL.so.1.3.1 等,但是 Qt 在链接阶段查找的 OpenGL 链接库是不带版本号的。
总起来说,我们需要在 /usr/lib/ 目录下为 OpenGL 链接库创建一个链接,并去掉版本号。
如果你不知道当前 Linux 系统中 libGL.so 的具体路径,可以使用
locate libGL令或find /usr -name libGL*令查找,然后使用ln -s创建链接。请看下面的演示:#查找 libGL 所在位置
[root@localhost ~]# locate libGL
/usr/lib64/libGL.so
/usr/lib64/libGL.so.1
/usr/lib64/libGL.so.1.2.0
/usr/share/doc/mesa-libGL-9.2.5
/usr/share/doc/mesa-libGL-9.2.5/COPYING
#创建链接
[root@localhost ~]# ln -s /usr/lib64/libGL.so.1 /usr/lib/libGL.so
Linux 系统中可能存在多个版本的 libGL.so,为任意一个版本创建链接即可。普通用户没有权限创建链接,所以我使用了 root 用户。完成以上操作,再次启动 Qt,然后编译或者运行,就不会出现“cannot find -lGL”错误了。
- 随机文章
- 国足 马尔代夫 1 0(国足一球小胜马尔代夫)
- 兰哥马尔代夫价格(再也不用担心兰哥马尔代夫出行预算!)
- 乌鸦 马尔代夫(乌鸦在马尔代夫的神秘奇遇)
- 成都马尔代夫风景(成都的马尔代夫:色彩斑斓的锦绣水乡)
- 美签 马尔代夫(美国和马尔代夫签署重要协议)
- 海宁马尔代夫视频(海宁小伙拍下夫妻在马尔代夫浪漫画面)
- 简阳马尔代夫新闻(简阳旅游公司将开通马尔代夫直航航班)
- 代办马尔代夫护照(马尔代夫办理护照:你需要知道的事情)
- 姚笛 马尔代夫(姚笛在马尔代夫度假遭遇不幸)
- 马尔代夫中国驾照(中国游客可在马尔代夫使用有效驾照!)
- 马尔代夫体育旅游(马尔代夫:蓝色大海中的体育旅游胜地)
- 蜜思摄影马尔代夫(蜜思摄影:在马尔代夫的梦幻拍摄之旅)
- 马尔代夫中国重庆(中国重庆:马尔代夫度假胜地人气不减)
- 珠光粉马尔代夫绿(令人心驰神往!探索马尔代夫神秘绿洲)
- 邹城马尔代夫是哪(邹城打造马尔代夫,海岛旅游新打卡地)
- 马尔代夫冬季旅居(冬季马尔代夫长居:享受阳光海滩生活)
- 马尔代夫准备淹没(马尔代夫寻求抗击全球气候变化的方法)
- 马尔代夫倒水最火(马尔代夫最新网红打卡点——倒水奇观)
- 山姆 马尔代夫(探寻马尔代夫之美:旅游大使山姆的热情记录)
- 郑州包机马尔代夫(直飞马尔代夫!郑州再次开通包机航班)
- 航拍马尔代夫国旗(以上空中俯拍,看马尔代夫国旗更美丽)
- 杨波 马尔代夫(杨波与马尔代夫:一场人文与自然的邂逅)
- 青岛马尔代夫进球(青岛队绝杀对手,帮助球队豪取进球!)
- 马尔代夫几种上岛(马尔代夫岛屿攻略:多种选择帮你上岛)
- 马尔代夫代理骗子(马尔代夫代理诈骗横行,游客需警惕!)
- 飞马尔代夫的机场(马尔代夫机场改造完成,更快更舒适!)
- 马利 马尔代夫(马尔代夫前总统发布视频:呼吁国际社会介入政变事件)
- 马尔代夫周边鲨鱼(周边海域的鲨鱼成马尔代夫旅游新亮点)
- 马尔代夫国徽贴纸(马尔代夫推出国徽贴纸,支持旅游复苏)
- 马尔代夫原始小岛(追寻自然之美!探访马尔代夫荒野小岛)
