64位Ubuntu 12.04下搭建嵌入式Qt(4.8.6)、QtCreator、qvfb过程全记录

最新公司搞一个新项目,需要在Linux下进行UI界面设计。选来选去,最后选择采用Qt平台来做,于是要开始研究一下Qt。

Qt作为业内最著名的UI开发工具之一,是一套完整的跨平台C++图形用户界面应用程序开发框架,可以实现一套源码,多个平台编译运行。自从1991年被奇趣公司推出之后,在业内获得了广泛的应用,不仅仅被用来UNIX/LINUX平台下的桌面环境KDE,更有其他诸多极为著名的软件工具都是采用Qt开发的,比如:Adobe Photoshop Album(就是大名鼎鼎的PS),Autodesk Maya,Google Earth,Opera,Skype,SMPlayer,VirtualBox,WPS Office,极品飞车等等,哈,是不是吓一大跳/p>

说到跨平台,Qt的本事可不是盖的,不管是windows(x86/x64),linux,MacOS,还是嵌入式arm,全部通吃。换句话说,同一份qt的代码,可以编译成上述各个不同的平台下运行的文件,只需要更换一些配置命令即可。但是,每一种平台下的开发环境搭建的步骤那肯定是不一样的。针对嵌入式环境,搭建过程无疑是最复杂也是最麻烦的,下面就是我本人的亲测过程全记录。

第一步、背景介绍

1、Qt版本介绍

首先介绍一下Qt所能生成出来的各个不同版本之间的区别。

根据所应用的目标系统不同,同一份Qt源码编译后所生成的版本也是不一样的。大致来说分为3种:

  • 第一种是在linux系统上编译完后仍然在linux系统上运行的,称为x11版本(至于为什么叫x11,这是因为linux系统的应用程序与视窗程序之间是通过X窗口系统的X11协议进行交互,所以称之为x11系统。具体请自行百度);

  • 第二种是在linux系统上编译完后转移到arm平台上运行的,称为Embeded arm版本,编译完后的文件必须烧录到arm处理器上运行,在PC端无法运行;

  • 第三种称之为Embeded x11版本,也叫做qvfb版本。这里要解释一下,如前所述,lixnu的应用程序是以X11协议(X窗口系统)输送到屏幕显示界面的,X server负责图形显示,应用程序负责计算、修改数据,两者基于某种协议通信。对于嵌入式linux,qt应用程序同样也需要一个窗口系统才能显示,但是嵌入式linux系统不能使用X11(太耗资源了),奇趣公司就专门开发了一个qws(QT windows system), 应用程序按照协议向qws发送数据,服务端负责显示数据。换句话说,qvfb就是qws的显示设备。不过要注意的是,embeded x11版并不是我们的开发板最终使用的Qt库,编译这个版本只是为了方便我们调试, 先在PC中仿真运行,看看界面,不必下载到开发板的文件系统中运行,两者的运行效果除了界面基本相同,其他方面还是有差异的。

经过上述分析可以看出,其实,我们做嵌入式开发,只需要涉及到后面2种版本,第一种版本的只有桌面应用程序开发的人才需要使用。而对于后面2个版本,严格来说只需编译Embeded arm版本的程序就好,因为它才是最终在arm平台上运行的版本。但是,如果只编译Embeded ARM版本的话,每次编译完都得下载到开发板上去运行才能看到效果,开发过程太过麻烦,因此我们才需要引入Embeded x11版本,借助于PC端的显示系统,快速完成界面部分的调试。所以,综合起来可以这么说,编译x11 版本的目的是为了方便学习Qt,编译Embeded x11是为了体验仿真效果,编译Embeded ARM版本才是为了完成嵌入式程序开发。

2、开发环境介绍

下面对我所安装的开发环境、以及所安装的Qt版本进行介绍,便于对比和查阅。

  • 物理机:Windows 10 64位;
  • 虚拟器:Virtualbox 5.20;
  • 虚拟机:Ubuntu 12.04 64位;
  • QtLib版本:qt-everywhere-opensource-src-4.8.6.tar.gz(点此直接下载)
  • QtCreator版本:qt-creator-linux-x86_64-opensource-2.5.2.bin(点此直接下载)

这里说明一下我选择上述Qt版本的原因。我下载的时间是2017年2月底,此时,Qt Library的版本已经更新到了5.8.0,而Qt Creator的版本已经更新到了2.5.2。不过,鉴于 上部分 友的建议,说5.0之后的Qt库,用的人还比较少,一旦遇到问题,不太好解决,因此建议仍然使用5.0之前的库。所以,我就选择了5.0之前的最后一个版本的库,也就是4.8.6。

3、安装准备工作

下载完qt的源码包之后进行解压。此处要注意的是,根据上述分析,根据运行环境和目标环境的不一样,Qt分为3个版本,这3个版本的源码其实是一样的,只是配置文件不一样,才会最终导致生成的文件不一样(这也就是为什么这个源码的压缩包叫做qt-everywhere的原因,其本意就是一个源码包可以通吃所有应用场合)。

所以,你需要根据你自己的需求,将该源码包解压出若干份出来(或者解压出一份然后复制也行,不过实测证明解压比复制快)。比如,我想要进行嵌入式开发,那就至少要解压出2份,一份用于编译Embeded arm版本,另一份用于编译Embeded x11版本;而如果我同时还想要学习一下桌面x11版本,则还需要再解压出一份x11版本。所以,我在home目录下创建了一个临时目录qt,然后在qt目录下再新建了3个目录用于分别存放各个版本的源码,各个子目录命名及其用途如下:

  • qt-x11目录:存放x11桌面版本的源码;
  • qt-qvfb目录:存放Embeded x11(qvfb)版本的源码;
  • qt-arm目录:存放Embeded arm版本的源码;

另外还需要顺便说明一下的是,上述步骤只是完成了对3个版本的源码目录的区分,当他们编译完成之后安装到系统中去时,同理,也要进行目录上的区分,否则会混乱不堪。届时,我们将通过命令行参数来进行指定,后面会详细介绍,此处只做铺垫介绍。

准备工作的最后一步,就是安装一下qt所依赖的一些系统库,执行如下命令即可:

最后一条命令是用于安装OpenGL的依赖库,如果你用不到OpenGL,则不用安装。

第二步、安装Qt库

1、安装x11版本的Qt

进入qt-x11目录,按顺序执行以下命令即可:

需要说明的是,make命令耗时较长,以我i3-4160处理器、8G内存的配置,大约半个多小时。执行完毕后,Qt就会自动安装到/usr/local/Trolltech/Qt-x11-4.8.6目录下。

2、安装qvfb版本的Qt

进入qt-qvfb目录,按顺序执行以下命令即可:

这里要说明的是,此处的config配置参数是本人实测OK的, 上很多教程里贴的参数,大多不能用。其中特别要注意“-xplatform qws/linux-x86_64-g++”字段,因为我本人的Ubuntu系统是64位的,所以将平台参数配置成linux-x86_64的。

3、安装arm版本的Qt

进入qt-arm目录,按顺序执行以下命令即可:

4、安装qvfb

重新进入qt-x11目录,按顺序执行以下命令:

make完后,会在qt-x11/bin目录下生成一个qvfb的可执行文件。将该文件拷贝到 /usr/local/Trolltech/Qt-x11-4.8.6/bin目录。

要特别说明的是,这里的qvfb必须是在qt-x11目录下编译,而不是在qt-qvfb目录下编译。 上有不少人没写清楚,害我一开始以为是在qt-qvfb目录下编译,弄了半天才发现目录搞错了!

OK,至此已经完成了3个版本的Qt源码的编译和生成,并在/usr/local/Trolltech/目录下已经生成了相应的文件。

5、修改环境变量

对于上述步骤4所生成的qvfb,不少同学可能会想立即启动起来看看。但是,在命令行输入qvfb时,系统会提示找不到该文件。这是因为尚未将该目录加入环境变量的原因。因此,下面我们要将该目录加入到环境变量中去,便于后续的引用和执行。

在文件的末端加入下面的语句:

保存,退出即可。之后,在任意位置输入qvfb都可以启动该程序了,也可以通过命令指定qvfb的界面尺寸:

启动之后的界面如下所示:

搞定!

第三步、安装QtCreator

经过上述各个步骤,基本完成了Qt编译库和编译工具的安装。至此为止,确实是可以进行Qt的开发了。但是,如果要进行实际的界面设计和集成,还缺少一个步骤,那就是集成开发环境的安装,即QtCreator。QtCreator是Qt自带的集成开发环境(类似于ARM的ADS/Keil/IAR,或者windows的VS等),它的设计目标是使开发人员能够利用Qt这个应用程序框架更加快速及轻易的完成开发任务。

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

然后输入以下命令安装bin文件:

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

第四步、配置QtCreator

QtCreator安装完毕之后,启动便可直接使用。但是有一个问题,它并不知道你的系统中安装了哪些Qt库,也不知道你将这些库安装在什么位置。因此,当你第一次启动QtCreator时,必须对其进行配置。

点击’工具’-‘选项’,弹出配置界面。在其中选择’构建和运行’页面,在’QT版本’标签下,分别配置你所安装的各个Qt库的相关信息。

首先配置Qt版本路径信息。如下图所示,分别配置好qt-x11、qt-qvfb、qt-arm这3个库的路径信息(即各个库中的qmake文件所在的路径信息)。

至此,基本完成了QtCreator运行所必须的各项参数的配置,可以开始新建工程进行实际操作了,如下图所示。

步骤1、新建工程

步骤3、设置目标

步骤4、设置类信息

步骤6、工程视图

基于qvfb环境的程序运行情况截图

这里写图片描述

至此,嵌入式Qt开发的安装和搭建工作基本完成,剩下的问题以后再慢慢摸索吧。

搞定,收工!

文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux24809 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年1月24日
下一篇 2017年1月25日

相关推荐