qt环境搭建

你说的曾经没有我的故事 提交于 2020-03-08 09:41:05

QT开发&QT应用运行用到的QT库:
Linux X64平台Qt Creator开发&应用运行用到的Qt库:
https://download.csdn.net/download/wanvan/10695824

ARM64平台应用运行用到的Qt库:
https://download.csdn.net/download/wanvan/10695879

QT Library配置须知:

直接下载使用我上面提供的编译好的Qt库,需要正确配置才能正常使用。
可能出现的问题:
问题1:移入我编译的QT库至Ubuntu下的QT Creator中时,可能QT Creator中会提示“Qt version is not properly installed,please run make install”的问题。 该提示就是说,Qt没有被正确安装,请运行make install这个问题是比较常见的一个。
出现此问题的原因就是:qmake.exe是在Qt安装编译时生成的,里面内嵌了Qt相关的一些路径。如果直接拷贝过来使用,自己的路径结构与原来不同,则Qt库就不能正常使用。提示就是Qt version is not properly installed,please run make install Qt没有被正确安装,请运行make install。
既然路径信息是内嵌在qmake.exe中了,应该是没法通过修改配置的方式解决这个问题了。所以解决此问题有如下方案:
方案1:保持跟我编译时的库的安装路径一致。路径为:/usr/local/Qt-5.7.0 【推荐此方案】
具体就是下载我提供的Linux X64平台的Qt-5.7.0库后,拷贝至Ubuntu系统下解压,然后将解压后的Qt-5.7.0拷贝至/usr/local/路径下,并配置好环境变量。

方案2:修改qmake.exe中的qt_prfxpath字段。【不推荐】
只能对qmake.exe下手了。(修改前,别忘了先备份一下哦)用16进制编译器,打开qmake.exe文件,搜索71 74 5f 70 72 66 78 70 61 74 68 3d( qt_prfxpath = ***),我用IDA工具查看的我编译的Linux X64平台的Qt-5.7.0库。结果如图:

https://blog.csdn.net/caoshangpa/article/details/72654972 方案2的参考

问题2:在问题1通过方案1解决之后,构建QT项目时可能就会出现“error: cannot find -lGL”
原因:没有装好依赖库。
解决方案:重新执行 sudo apt-get install libgl1-mesa-dev 安装一系列依赖库。

最新搞一个新项目,需要在linux下进行QT开发,包括用到QCamera。

我下载了Qt的最新版本源码, 同时参考着一些旧的资料,将全部安装和使用过程都走了一遍,包括安装过程中的踩坑过程,都记录下来,以备日后查阅和同道共享。

一、环境搭建过程

步骤0、开发环境

首先介绍一下我的开发环境:

物理机:windows 10 64位;
虚拟器:Virtualbox 5.20;
虚拟机:Ubuntu 16.04 64位;

步骤1、准备工作

Ubuntu系统中,为了保证Qt的正常运行,必须安装一些必要的工具,包括g++编译器,以及一些必要的库。可使用以下命令安装:

sudo apt-get install g++
sudo apt-get install libx11-dev libxext-dev libxtst-dev12

如果你的Ubuntu已经安装g++和libX11-dev libXext-dev libXtst-dev,可以跳过本步骤。

步骤2、下载QT源码和IDE

要去Qt官网下载相应的源码和文件。我下载的时间是2017年2月底,此时,Qt Library的版本已经更新到了5.8.0,而Qt Creator的版本已经更新到了2.5.2。不过,鉴于网上部分网友的建议,说5.0之后的Qt库,用的人还比较少,一旦遇到问题,不太好解决,因此建议仍然使用5.0之前的库。所以,我就选择了5.0之前的最后一个版本的库,也就是4.8.6。至于Qt Library以及Qt Creator的具体下载地址如下:

qt library源码包:http://download.qt.io/archive/qt/5.7/5.7.0/single/qt-everywhere-opensource-src-5.7.0.tar.xz
qt creator:http://download.qt.io/official_releases/qtcreator/4.7/4.7.0/qt-creator-opensource-linux-x86_64-4.7.0.run

步骤3、编译&安装Qt Library

Qt Library的源码下载完毕之后,随意解压到一个临时目录,然后进入该目录进行配置和编译,具体步骤如下:

1、解压
tar xvJf qt-everywhere-opensource-src-5.7.0.tar.xz

2、配置

cd qt-everywhere-opensource-src-5.7.0
./configure

然后终端会出现让你选择商业版还是开源版,输入字母o选择开源版。然后会有协议让你接受,输入yes就OK了。系统就会开始对整个项目进行配置,稍等片刻就好。

3、编译

配置完毕之后,终端会提示如下信息:
Qt is now configured for building. Just run ‘make’.
Once everything is built, you must run ‘make install’.
Qt will be installed into /usr/local/Qt-5.7.0
To reconfigure, run ‘make confclean’ and ‘configure’.

此时,按照要求输入make便会开始编译生成Qt库,同时编译所有演示程序。这个过程比较漫长,耐心等待便可。

编译在我电脑上耗时1.5小时左右。编译过程中,遇到的一些坑详见后面“踩坑记录”。

4、生成

Qt编译完成后,需要输入make install来安装,注意make install需要root权限,所以要加sudo。

sudo make install
1
安装过程比较快,安装完毕后,首先要进入Qt安装目录测试一下Qt是否安装成功,Qt默认安装在/usr/local/Qt-5.7.0目录里面,所以直接找到该目录,进入qmake所在的bin文件夹,然后输入./qmake -v指令,如果出现正确的版本信息,则表示安装成功了。

输入./qmake -v指令,如果出现正确的版本信息:

移植QT Library的方法:
如果要移植编译的上述编译生成的QT Library,则将/usr/local/Qt-5.7.0整个目录打包成tar包,然后拷贝至其他Linux下面,配置环境变量就可以使用了。

步骤4、安装IDE:Qt Creator

相比Qt Library,Qt Creator的安装要简单的多,我们下载的bin文件是可执行文件,安装时会出现像在Windows下的界面,安装路径默认就可以了。使用终端cd到你刚刚存放Qt Creator的临时目录,修改bin文件的权限使其具有可执行的权限:

1
chmod 777 qt-creator-opensource-linux-x86_64-4.7.0-rc1.run

然后输入以下命令安装bin文件:
1
./qt-creator-opensource-linux-x86_64-4.7.0-rc1.run

就会出现仿windows系统的安装界面。如下图所示,一步步按照要求确认就可以完成安装流程了。

1

步骤5、设置环境变量

最后要设置一下环境变量。设置环境变量的目的是为了在任何目录下都可以使用Qt Library。

sudo gedit /etc/profile
1
然后会弹出一个编辑窗口,在末尾添加以下代码:
export QTDIR=/usr/local/Qt-5.7.0

export PATH=$QTDIR/bin: $PATH

export LD_PLUGINS_PATH= $QTDIR/plugins: $LD_PLUGINS_PATH

export LD_LIBRARY_PATH= $QTDIR/lib: $LD_LIBRARY_PATH

保存后退出,source /etc/profile 生效后,切到其他路径运行“qmake -v”,如果有QT版本信息输出,则说明配置OK。如下图所示:

重启电脑后,打开终端在任意目录下输入qmake,如果能出现正确信息,则表明环境变量已经配置成功。

步骤6、开始体验

启动IDE:
到此为止,Qt已经安装完毕,在终端里输入Qt Creator命令,或者在dash主页中搜索Qt Creator并启动它,或者将安装目录bin下的qtcreator 创建链接到Ubuntu桌面,双击该图标即可启动。

最后运行一个demo测试一下吧。

查看QT开发环境搭建结果:
QT Library + Qt Creator环境搭建好之后,就可以直接通过IDE开发QT应用程序了。搭建好后,Qt Creator中Build Kits有编译器和Qt库版本,只有这样才能正常编译。如下:

Demo实例:
基于搭建好的环境,开发的Demo程序,运行效果如下:

二、参考文章

Qt for Linux/X11 - Building from Source
http://doc.qt.io/qt-5/linux-building.html 【QT官方编译源码指南】

Qt Configure Options
http://doc.qt.io/qt-5/configure-options.html

三、踩坑记录

问题1:The test for linking against libxcb and support libraries failed!
或者QT IDE无法运行时且提示:This application failed to start because it could not find or load the Qt platform plugin “xcb”
问题描述:
checking for xcb-syslibs… no.
The test for linking against libxcb and support libraries failed!
You might need to install dependency packages, or pass -qt-xcb.
See src/plugins/platforms/xcb/README.
解决方案:
sudo apt-get install libxcb*

参考
1
https://blog.csdn.net/ghostking8/article/details/74357363

问题2: configure时出现“gstreamer-1.0 development package not found” 和“gstreamer-audio-0.10 development package not found”

g++ -Wl,-O1 -o alsa alsatest.o -lasound
alsa enabled.
checking for GStreamer 1.0…
Project ERROR: gstreamer-1.0 development package not found
GStreamer 1.0 disabled.
checking for GStreamer 0.10…
Project ERROR: gstreamer-audio-0.10 development package not found
GStreamer 0.10 disabled.
Done running configuration tests.

解决方案:
sudo apt-get install gstreamer1.0* 【安装过程中需要另外安装很多依赖库】
sudo apt-get installlibgstreamer-plugins-base1.0-dev

问题3:Make编译时出错导致编译终止,具体出错记录如下:

make[2]: *** [sub-quick-make_first] Error 2
make[1]: *** [sub-examples-make_first] Error 2
。。。
截图如下:

原因:
前面configure时找不到GStreamer 相关包,导致编译Qt Multimedia失败。
编译时缺少一些库,导致整个编译过程失败;

解决过程:
第1步:安装X11相关依赖的库
sudo apt-get install libfontconfig1-dev libfreetype6-dev libx11-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libx11-xcb-dev libxcb-glx0-dev

sudo apt-get install libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync0-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev

参考 Qt for X11 Requirements
http://doc.qt.io/qt-5/linux-requirements.html

第2步:解决问题2中gstreamer-1.0和gstreamer-audio-0.10开发包找不到的问题,保证“GStreamer 1.0 enabled”

经过上述2步的操作后,make最终成功了。make成功结果如下图所示:

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!