基于QT平台的交叉编译环境搭建的架构分析

这几天由于工作需要,进行了基于qt平台开发的交叉编译环境的搭建;首先在这里不具体介绍如何进行搭建的过程,网络上相关的介绍博客十分的多,而今天,我将我对完整搭建的相关文件和细节做一个分析,希望可以帮助大家在理解上有一个进步。

工具/原料
ubuntu12.04
qt相关压缩包
方法/步骤
1:第一步认识:什么是qt?
首先从定义上来说明,qt是跨平台c++图形用户界面应用程序开发的框架;
这里有2个关键字,“跨平台”和“框架”。
跨平台:说明具有平台的跨域性,具有低耦合的模块性;
框架:说明一个兼容性,可以适用很多编译环境;
当然,这么说概念还是很模糊,暂且,我们把qt当作是一个游戏角色,只要获得不同的buff就能获得不同的作战效果;

2:第二步认识:什么是交叉编译环境?
根据交叉编译环境的定义:在一个平台下编译的程序可以直接在另一平台下直接运行而不加修饰,当然这两个环境必须是相关联,不可能没有任何的联系;
构成交叉编译环境的前提:
1.具有相同的编译工具链;
2.具有相同可支持的库和命令;

3:第三步认识:为什么需要搭建交叉编译环境?
从这点,我们应该明白,这是为了多元化同样也是为了适应不同的环境;举个例子:
话题中心:电脑可以实现看电影的功能,我们需要一直看电影的状态;
a.在草原上看电影,用电脑看可以实现我们想要一直看电影的想法;
b.在广场上看电影,戴上耳机还是可以实现我们想要一直看电影的想法;
c.在家里看电影,效果还行,同样可以实现我们想要一直看电影的想法;
d.在直径20cm的水管中看电影,不要问我为什么人可以进20cm的水管中的,也不要问我为什么在20cm的水管中还想要看电影,我也不知道,可是如果还是要实现我们想要一直看电影的想法呢?用手提肯定放不下(那人进的去?别问我),那这时我们如果有手机,那还是可以将电影放进手机中,继续实现我们想要一直看电影的想法的;
那么问题来了,如果没有交叉编译环境,该电影怎么被手机所识别和播放呢?这时就需要搭建一个可以供电影播放的环境,这个环境和电脑中播放电影的环境要一样,当然可以裁剪,但是基本具有播放电影的效果;
第二个问题,手机在具有播放功能之前就是一板砖,怎么才能进行开发呢?对了通过电脑;
就是如此,在进行设备的开发时,首先必须搭建好宿主机的环境,如果设备可以,大可不必裁剪,直接将搭好的环境复制粘贴到从主机;但是由于从主机的硬件限制必须进行裁剪,这里可以说主要是两点:
1.宿主机可以听歌,可是从主机没有功放功能,所以裁剪掉音乐播放的环境;
2.宿主机可以听歌,从主机也可以听歌,可是由于从主机以听歌,内存不够了,主要有价值的功能就实现不了了(我们要看电影的),好吧,裁剪掉音乐播放的环境;

4:第四部:搭建基于qt开发的交叉编译环境需要那些开源软件支持?
1.交叉编译器;
通过交叉编译器编译出的文件,可以使我们的从主机看的到和看的懂从宿主机中移植过来的这些文件;交叉编译器的例子如下图:

5:2.可供移植的交叉编译环境;
一般在说,现在学习过程中的主流交叉变异环境包括:powerpc平台(以win系列为主),x86平台(以linux、unix操作系统为主)、arm平台(移动设备等),这三大类,所以通常根据需要我们会进行配置,裁剪和编译,安装这些环境下的交叉编译环境;


6:3.可供程序开发的qt平台;
如下:qtcreator,这里涉及了一个十分重要的知识点qmake,也是qt开发的核心知识;

7:第五步:在编译过程中需要打的补丁:
# sudoapt-getinstalllibx11-devlibxext-devlibxtst-dev
出错:basicxlibfunctionalitytestfailed!
记住对于自己的功能进行相关的操作,看网络上的相关经验时也是,并不是所以的操作都是必须的,是否支持触屏,是否支持qcfb等;
最后提示,编译期间时间较长,所以必须要有一个认识再进行操作,不要做无头苍蝇;
注意事项
qt相关下载途径:qt官网
感恩开源,改变世界
如有错误和不理解的欢迎留言交流
希望本文基于QT平台的交叉编译环境搭建的架构分析能帮到你。