编辑推荐: |
本文来自于csdn,本文主要介绍了在Linux平台下QT环境搭建的详细过程以及一些作者的踩坑记录等相关知识。 |
|
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库。结果如图:
问题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。
安装过程比较快,安装完毕后,首先要进入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文件的权限使其具有可执行的权限:
chmod 777 qt-creator-opensource-linux-x86_64-4.7.0-rc1.run |
然后输入以下命令安装bin文件:
./qt-creator-opensource-linux-x86_64-4.7.0-rc1.run |
就会出现仿windows系统的安装界面。如下图所示,一步步按照要求确认就可以完成安装流程了。
步骤5、设置环境变量
最后要设置一下环境变量。设置环境变量的目的是为了在任何目录下都可以使用Qt
Library。
然后会弹出一个编辑窗口,在末尾添加以下代码:
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*
问题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成功结果如下图所示:
|