Linux下Qt编译出现“cannot find -lGL”及无法安装libgl1-mesa-dev解决

原文地址:https://blog.csdn.net/qq_39736982/article/details/84594452(更详细)
在Linux系统下安装好Qt5,打开Qt Creator新建一个最简单的工程,编译却出现"cannot find -lGL"错误。
方法1:加入GL库到该目录下
方案1、从网上下载
sudo apt-get install libgl1-mesa-dev
或者:yum install mesa-libGL-devel mesa-libGLU-devel
方案2、搜索系统中已经存在的libgl1-mesa-dev相关文件。libgl1-mesa-dev是有关OpenGL的库。
具体步骤:
使用locate libGL命令或find /usr -name libGL*命令搜索。
搜索结果中发现/usr/lib64/libGL.so.1文件(这个文件也可能在另一个目录中)。

然后使用ln -s/usr/lib64/libGL.so.1 /usr/lib/libGL.so命令给已存在的库文件创建一个链接到/usr/lib目录。

或者直接复制过去,修改文件名即可

在这里插入图片描述

然后在Qt Creator中再次编译工程,错误消失。

但是如果在代码中加入其他Qt模块,如include 等,将会出现新问题:找不到GL/gl.h文件。

通过追踪错误来源,发现在QtGui模块的头文件中有包含GL/gl.h的部分,此时在include 等命令前加上#define QT_NO_OPENGL,则可解决问题。或者在项目文件中加入DEFINES+=QT_NO_OPENGL宏就可以了

最后分析,一开始Qt找不到的库文件是OpenGL的库,而Qt默认包含了OpenGL库,因此在没有安装OpenGL库时编译Qt程序,则会出现 错误。而无法安装libgl1-mesa-dev,有可能与系统中已经存在的OpenGL相关文件冲突有关。此问题出现在虚拟机Ubuntu中,在真机上 的Linux系统暂时没有遇到。个人猜测有可能与Vmware tools有关,因为我遇到的另一个gtk的lib依赖错误也似乎与它有关,Vmware tools程序中包含一些与显示有关的驱动,不知道这是不是造成冲突的原因。如果需要同时开发Qt和OpenGL的,又遇到了这个问题的话,建议重新安装 一次Linux系统,并在安装Vmware tools之前谨慎考虑,再尝试安装Qt和libgl1-mesa-dev。

https://www.linuxidc.com/Linux/2016-05/131040.htm

https://www.aliyun.com/jiaocheng/128675.html

CentOS下的解决方案

1、安装Qt,进入CentOS系统的终端,依次执行以下命令
chmod +x qt-opensource-linux-x64-5.5.1.run
./qt-opensource-linux-x64-5.5.1.run

2、笔者CentOS 7 64位,安装完成Qt5.5.1。随意新建一个Qt Widgets Application。

结果遇到Qt编译问题,提示信息如下:

error: cannot find -lGL

error: collect2: error: ld returned 1 exit status

原因是系统缺乏相应的OpenGL库文件造成,解决方案如下:

联网的前提下,进入CentOS系统的终端,依次执行以下命令,即可解决。注意,当提示Is this ok[y/d/N]:时,请输入"y"。

su root

yum install mesa-libGL-devel mesa-libGLU-devel

yum install freeglut-devel

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值