对于很多 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”错误了。
————————————————
版权声明:本文为CSDN博主「江南又旧雨」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_38293453/article/details/104143898

Linux Qt cannot find -lGL错误完美解决方案相关推荐

  1. linux qt 找不到 lgl,Linux Qt cannot find -lGL错误完美解决方案(亲测有效)

    http://c.biancheng.net/view/3901.html 对于很多 Linux 发行版本,Qt 安装完成后如果直接编译或者运行项目,会出现"cannot find -lGL ...

  2. Linux Qt cannot find -lGL错误

    问题描述: 将项目移植到linux之后,用Qt编译发现 编译错误cannot find -lGL 原因分析: 1.库的问题嘛:首先想到代码中有些头文件或库文件与windows不兼容.于是新建空工程编译 ...

  3. “IIS配置401错误”完美解决方案

    "IIS配置401错误"完美解决方案   1.错误号401.1 症状:HTTP 错误 401.1 - 未经授权:访问由于凭据无效被拒绝. 分析: 由于用户匿名访问使用的账号(默认是 ...

  4. Linux Qt cannot find -lGL 解决方案

    1. 解决方案 对于很多 Linux 发行版本,Qt 安装完成后如果直接编译或者运行项目,会出现"cannot find -lGL"错误,如下图所示: 这是因为 Qt 找不到 Op ...

  5. linux下Qt cannot find -lGL错误的解决方法

    在linux下使用Qt 编译时候遇上了cannot find -lGL错误 因为缺少相关包,可以使用下列命令安装 sudo apt-get install libqt4-dev

  6. linux内核变更导致的错误及解决方案1

    Linux 内核变更导致驱动经常出现的错误记录 - 代码天地 (codetd.com)

  7. linux下编译doppia,Grub错误总结解决方案(共十七条)

    lyzhang_sh 于 2009-01-08 19:02:50发表: 感觉你还没说清楚啊 进啥模式里? 对于新手很难理解了 lion2010 于 2008-09-05 03:40:46发表: 我是1 ...

  8. nltk安装punkt等语料库时报SSL错误完美解决方案及离线安装方法

    nltk是NLP领域中一个比较通用的国际分词工具,但是使用时往往依赖语料库数据包,需要安装到本地,以下介绍在线安装和离线安装两种方式: (ps:对NLP感兴趣的朋友可以相互学习,我的微信号:Joney ...

  9. Linux Qt cannot find -lGL

    #查找 libGL 所在位置 [root@localhost ~]# locate libGL /usr/lib64/libGL.so /usr/lib64/libGL.so.1 /usr/lib64 ...

最新文章

  1. 面向对象语言的new操作
  2. 关于CSS属性display:none和visible:hidden的区别
  3. 南工程计算机学院贴吧,【计算机工程学院答疑转帖】
  4. 【网址收藏】本地VSCode编辑远程服务器文件:Remote SSH
  5. Ubuntu换源失败:Could not get lock /var/lib/apt/lists/lock - open
  6. CCIE-LAB-第五篇-DHCP+DHCP-Realy+DHCP snooping
  7. 超大规模数据集类的创建
  8. HTML5 学习总结(二)——HTML5新增属性与表单元素
  9. (五)nginx设置静态文件不记录日志
  10. python如何制作登录密码_python实战系列之模拟用户密码登陆系统(一)
  11. shell脚本通过ping命令来获取平均延时
  12. 经过七年演进,Serverless流行起来了吗?
  13. android 删除特定字符串,android-从改造响应中删除不需要的字符串
  14. 湖南大学计算机与通信学院李燕,基于SVM的面部表情分析
  15. #LeetCode15. 三数之和 @FDDLC
  16. (PTA)数据结构(作业)1、基本概念
  17. 富士康将和台积电联手 竞购东芝半导体业务
  18. 线性代数(十) : 矩阵的列空间与零空间
  19. Assembly ADODB注册
  20. 综合调度系统数据单向传输与网络隔离应用方案

热门文章

  1. Arduino 串口数据读写
  2. 区块链安全:实现公链双花攻击的多种方法
  3. 如何做gif动图表情包?轻松一键快速制作gif表情包
  4. 通俗易懂解释raid0和raid5_简要阐述raid 0,raid 1,raid5 之间的区别于优缺点以及最低组建条件和可用容量...
  5. .net EF 事务TransactionScope和BeginTransaction的用法
  6. SpringBoot系列之对Excel报表的校验提示
  7. 互联网产品的需求分析
  8. 【Python爬虫实战】使用Selenium爬取QQ音乐歌曲及评论信息
  9. NetScaler AG自定义用户门户
  10. MIT 操作系统实验 MIT JOS lab1