7158次浏览
8
2019-4-10
编辑推荐:
本文来自于csdn,本文主要介绍了在Linux平台下QT环境搭建的详尽过程以及一些作者的踩坑记录等相关知识。
QTLibrary配置须知:
直接下载使用我里面提供的编译好的Qt库,须要正确配置能够正常使用。
可能出现的问题:
问题1:移入我编译的QT库至Ubuntu下的QTCreator中时,可能QTCreator中会提示“Qtversionisnotproperlyinstalled,pleaserunmakeinstall”的问题。该提示就是说,Qt没有被正确安装,请运行makeinstall这个问题是比较常见的一个。
出现此问题的诱因就是:qmake.exe是在Qt安装编译时生成的,上面内嵌了Qt相关的一些路径。倘若直接拷贝过来使用,自己的路径结构与原先不同,则Qt库就不能正常使用。提示就是Qtversionisnotproperlyinstalled,pleaserunmakeinstallQt没有被正确安装,请运行makeinstall。
既然路径信息是内嵌在qmake.exe中了,应当是无法通过更改配置的方法解决这个问题了。所以解决此问题有如下方案:
方案1:保持跟我编译时的库的安装路径一致。路径为:/usr/local/Qt-5.7.0【推荐此方案】
具体就是下载我提供的LinuxX64平台的Qt-5.7.0库后,拷贝至Ubuntu系统下解压,之后将解压后的Qt-5.7.0拷贝至/usr/local/路径下,并配置好环境变量。
方案2:更改qmake.exe中的qt_prfxpath主键。【不推荐】
只能对qmake.exe下手了。(更改前,别忘了先备份一下哦)用16补码编译器,打开qmake.exe文件,搜索71745f70726678706174683d(qt_prfxpath=***),我用IDA工具查看的我编译的LinuxX64平台的Qt-5.7.0库。结果如图:
问题2:在问题1通过方案1解决以后,建立QT项目时可能还会出现“error:cannotfind-lGL”
缘由:没有装好依赖库。
解决方案:重新执行sudoapt-getinstalllibgl1-mesa-dev安装一系列依赖库。
最新搞一个新项目,须要在linux下进行QT开发,包括用到QCamera。
我下载了Qt的最新版本源码,同时参考着一些旧的资料,将全部安装和使用过程都走了一遍,包括安装过程中的踩坑过程,都记录出来,以备日后查阅和同道共享。
一、环境搭建过程
步骤0、开发环境
首先介绍一下我的开发环境:
化学机:windows1064位;
虚拟器:Virtualbox5.20;
虚拟机:Ubuntu16.0464位;
步骤1、准备工作
Ubuntu系统中,为了保证Qt的正常运行,必须安装一些必要的工具,包括g++编译器,以及一些必要的库。可使用以下命令安装:
sudoapt-getinstallg++
sudoapt-getinstalllibx11-devlibxext-devlibxtst-dev12
假如你的Ubuntu早已安装g++和libX11-devlibXext-devlibXtst-dev,可以跳过本步骤。
步骤2、下载QT源码和IDE
要去Qt官网下载相应的源码和文件。我下载的时间是2017年2月末linux下qt环境搭建,此时,QtLibrary的版本早已更新到了5.8.0,而QtCreator的版本早已更新到了2.5.2。不过,鉴于网上部份网友的建议,说5.0以后的Qt库,用的人还比较少,一旦碰到问题linux系统下载官网,不太好解决,因而建议依旧使用5.0之前的库。所以,我就选择了5.0之前的最后一个版本的库,也就是4.8.6。至于QtLibrary以及QtCreator的具体下载地址如下:
qtlibrary源码包:
single/qt-everywhere-opensource-src-5.7.0.tar.xz
qtcreator:
qtcreator/4.7/4.7.0/qt-creator-opensource-linux-x86_64-4.7.0.run
步骤3、编译&安装QtLibrary
QtLibrary的源码下载完毕以后,随便解压到一个临时目录,之后步入该目录进行配置和编译,具体步骤如下:
1、解压
tarxvJfqt-everywhere-opensource-src-5.7.0.tar.xz
2、配置
cdqt-everywhere-opensource-src-5.7.0
./configure
之后终端会出现让你选择商业版还是开源版,输入字母o选择开源版。之后会有合同让你接受,输入yes就OK了。系统都会开始对整个项目进行配置,稍等片刻就好。
3、编译
配置完毕以后,终端会提示如下信息:
Qtisnowconfiguredforbuilding.Justrun‘make’.
Onceeverythingisbuilt,youmustrun‘makeinstall’.
Qtwillbeinstalledinto/usr/local/Qt-5.7.0
Toreconfigure,run‘makeconfclean’and‘configure’.
此时,根据要求输入make便会开始编译生成Qt库,同时编译所有演示程序。这个过程比较漫长,耐心等待便可。
编译在我笔记本上历时1.5小时左右。编译过程中,遇见的一些坑详见前面“踩坑记录”。
4、生成
Qt编译完成后,须要输入makeinstall来安装,注意makeinstall须要root权限,所以要加sudo。
sudomakeinstall
安装过程比较快,安装完毕后,首先要步入Qt安装目录测试一下Qt是否安装成功,Qt默认安装在/usr/local/Qt-5.7.0目录上面,所以直接找到该目录,步入qmake所在的bin文件夹,之后输入./qmake-v指令,假若出现正确的版本信息,则表示安装成功了。
输入./qmake-v指令,假若出现正确的版本信息:
移植QTLibrary的方式:
假如要移植编译的上述编译生成的QTLibrary,则将/usr/local/Qt-5.7.0整个目录打包成tar包,之后拷贝至其他Linux下边,配置环境变量就可以使用了。
步骤4、安装IDE:QtCreator
相比QtLibrary,QtCreator的安装要简单的多,我们下载的bin文件是可执行文件,安装时会出现像在Windows下的界面,安装路径默认就可以了。使用终端cd到你刚才储存QtCreator的临时目录,更改bin文件的权限使其具有可执行的权限:
chmod777qt-creator-opensource-linux-x86_64-4.7.0-rc1.run
之后输入以下命令安装bin文件:
./qt-creator-opensource-linux-x86_64-4.7.0-rc1.run
都会出现仿windows系统的安装界面。如右图所示,一步步根据要求确认就可以完成安装流程了。
步骤5、设置环境变量
最后要设置一下环境变量。设置环境变量的目的是为了在任何目录下都可以使用QtLibrary。
sudogedit/etc/profile
之后会弹出一个编辑窗口,在末尾添加以下代码:
exportQTDIR=/usr/local/Qt-5.7.0
exportPATH=$QTDIR/bin:$PATH
exportLD_PLUGINS_PATH=$QTDIR/plugins:$LD_PLUGINS_PATH
exportLD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
保存后退出,source/etc/profile生效后,切到其他路径运行“qmake-v”,假如有QT版本信息输出,则说明配置OK。如右图所示:
重启笔记本后,打开终端在任意目录下输入qmake,倘若能出现正确信息linux下qt环境搭建,则表明环境变量早已配置成功。
步骤6、开始体验
启动IDE:
到此为止,Qt早已安装完毕,在终端里输入QtCreator命令,或则在dash主页中搜索QtCreator并启动它,或则将安装目录bin下的qtcreator创建链接到Ubuntu桌面,双击该图标即可启动。
最后运行一个demo测试一下吧。
查看QT开发环境搭建结果:
QTLibrary+QtCreator环境搭建好以后,就可以直接通过IDE开发QT应用程序了。搭建好后,QtCreator中BuildKits有编译器和Qt库版本,只有这样能够正常编译。如下:
Demo实例:
基于搭建好的环境,开发的Demo程序,运行疗效如下:
二、参考文章
QtforLinux/X11-BuildingfromSource
【QT官方编译源码手册】
QtConfigureOptions
三、踩坑记录
问题1:Thetestforlinkingagainstlibxcbandsupportlibrariesfailed!
或则QTIDE难以运行时且提示:ThisapplicationfailedtostartbecauseitcouldnotfindorloadtheQtplatformplugin“xcb”
问题描述:
checkingforxcb-syslibs…no.
Thetestforlinkingagainstlibxcbandsupportlibrariesfailed!
Youmightneedtoinstalldependencypackages,orpass-qt-xcb.
Seesrc/plugins/platforms/xcb/README.
解决方案:
sudoapt-getinstalllibxcb*
问题2:configure时出现“gstreamer-1.0developmentpackagenotfound”和“gstreamer-audio-0.10developmentpackagenotfound”
g++-Wl,-O1-oalsaalsatest.o-lasound
alsaenabled.
checkingforGStreamer1.0…
ProjectERROR:gstreamer-1.0developmentpackagenotfound
GStreamer1.0disabled.
checkingforGStreamer0.10…
ProjectERROR:gstreamer-audio-0.10developmentpackagenotfound
GStreamer0.10disabled.
Donerunningconfigurationtests.
解决方案:
sudoapt-getinstallgstreamer1.0*【安装过程中须要另外安装好多依赖库】
sudoapt-getinstalllibgstreamer-plugins-base1.0-dev
问题3:Make编译时出错造成编译中止,具体出错记录如下:
make[2]:***[sub-quick-make_first]Error2
make[1]:***[sub-examples-make_first]Error2
。。。
截图如下:
缘由:
后面configure时找不到GStreamer相关包嵌入式linux 培训,致使编译QtMultimedia失败。
编译时缺乏一些库,造成整个编译过程失败;
解决过程:
第1步:安装X11相关依赖的库
sudoapt-getinstalllibfontconfig1-devlibfreetype6-devlibx11-devlibxext-devlibxfixes-devlibxi-devlibxrender-devlibxcb1-devlibx11-xcb-devlibxcb-glx0-dev
sudoapt-getinstalllibxcb-keysyms1-devlibxcb-image0-devlibxcb-shm0-devlibxcb-icccm4-devlibxcb-sync0-devlibxcb-xfixes0-devlibxcb-shape0-devlibxcb-randr0-devlibxcb-render-util0-dev
参考QtforX11Requirements
第2步:解决问题2中gstreamer-1.0和gstreamer-audio-0.10开发包找不到的问题,保证“GStreamer1.0enabled”
经过上述2步的操作后,make最终成功了。make成功结果如右图所示:
7158次浏览
8
相关文章
深度解析:清除烂代码
怎么编撰出拥抱变化的代码
构建-使代码更简约优美
团队项目开发"编码规范"系列文章
相关文档
构建-改善既有代码的设计
软件构建v2
代码整洁之道
高质量编程规范
相关课程
基于HTML5顾客端、Web端的应用开发
HTML5+CSS开发
嵌入式C高质量编程
C++中级编程