近期参加个比赛,需要用到博创s3c2410的开发板,搭建QT/Embedded的环境,真费了不少功夫,开始想用那个qtopia的桌面的,但是移植老是不成功,后来看看用的是CentOS6.4,但是开发板光盘里提供的,qtopia(版本竟然还是2.1.1)这个东西太老了,已经绝版了。在这里给各位以后开发的兄弟提个醒,qtopia这就是个坑.
QT各版本起源
Qt 的版本是按照不同的图形系统来划分的,目前分为四个版本:
Win32版,适用于Windows平台;
X11版,适合于使用了x系统的各种 linux 和 unix的平台;
Mac版,适合与苹果MacOS;
embedded版,适合于具有帧缓冲(framebuffer)的linux 的平台。
Qt,Qt/E,Qtopia Core, Qtopia这些版本之间的区别和联系
Qt泛指Qt的所有桌面版本,
比如Qt/X11,Qt Windows,Qt Mac(当然QT5以后还有Android和IOS)等。由于Qt最早是在Linux中随着KDE流行开来的,因此通常很多人说的Qt都指用于Linux/Unix的Qt/X11。一般命名以qt-x11-opensource-xxx!
QT/E -> Qtopia-core -> Qt-embedded-opensource(同一种鸟):
Qt 在刚出现的时候,对于Linux和Unix系统,只有构建于Xlib之上的X11版。但随着Linux操作系统在嵌入式领域的应用日渐广泛,Qt推出了嵌入式的版本Qt/E。由于嵌入式受限的硬件环境往往难以运行庞大的X服务器,Qt/E去掉了X Lib的依赖而直接工作于Frame Buffer上,因而效率更高,但它并不是Qt的子集,而应该是超集,部分机制(如QCOP等)不能用于Qt/X11中。
值得一题的是QT/E现在的源码包名字叫qt-everywhere,它跟Qtlibraries 4.8.5 for Linux/X11其实是一样的东西,只不过用的编译器不同,就能配出不同的环境,qt-everywhere意思就是说与QT4一样的代码可以同时运行在嵌入式环境和PC主机中。
QtExtended->Qtopia(注意不是Qtopia-core,两者是不一样的):
一般命名为qtopia-opensource,最初是sourceforge.net上的一个开源项目,全称是Qt Palmtop Environment,是构建于Qt/E之上一个类似桌面系统的应用环境,包括了PDA和手机等掌上系统常见的功能如电话簿、日程表等。后来Qtopia 已经成为了Trolltech的又一个主打产品,为基于Linux操作系统的PDA和手机提供了一个完整的图形环境。相比之下,Qt/E是qtopia基础类库
在2008年9月30日前称Qtopia。从Qtopia 4.4.0以后的版本开始,称为QtExtended 4.4.1。
但是其最终在开发中止2008年3月5日,版本停留在4.4.3,在版本4之前,Qt/E和Qtopia是不同的两套程序,Qt/E是基础类库,Qtopia是构建于Qt/E之上的一系列应用程序。但从版本4开始,Trolltech将Qt/E并入到了Qtopia产品线中去了,并推出了新的Qtopia4。但实际上原来的Qt/E仍然作为基础类库,只是改名为Qtopia Core了,也许又感觉Qtopia Core跟Qtopia容易让人搞混,所以又改名为qt-embedded-linux-opensource-linux/wince(QT也支持Wince )。它作为嵌入式版本的核心,既可以与Qtopia配合,也可以独立使用。而原来的Qtopia则被分成几层,核心的应用框架和插件系统被称为Qtopia Platform,上层的应用程序则按照不同的目标用户分为不同的包,如Qtopai PDA,Qtopia Phone。
Qte的改名过程,Qte-->Qtopia Core-->Qt-embedded-linux-xxxx-Qt-everywhere
The end/QtEmbedded概述
Qtopia这个东西目前已经停止维护了,我们用这个东西很麻烦,也很旧
因此我们选用QT/EMbedded4.8.5开发
在Linux中分别安装应用于不同平台的Qt:PC平台;嵌入式X86平台;ARM平台。
这三者PC版、嵌入式X86版和ARM版的区别主要体现在:当configure时分别加了不同的参数,
具体区别是:
ARM平台:
编译好的程序,用于在arm平台上运行。这个主要是用来编译,因为要下载到开发板上,需要arm版的qte的库文件,编译后直接下载到开发板运行;
具体安装配置过程请看这里http://blog.csdn.net/gatieme/article/details/22919963
嵌入式X86平台
嵌入式X86平台:基于frame-buffer,在PC机上可以模拟应用程序在arm开发板上的运行情况。用此编译好的程序,只用“./”命令不可以运行,必须加上参数 [ -qvfb ]–qws
这个自带有个模拟器,可以模拟出arm开发板的样子出来。方便调试;
具体安装配置过程请看这里ARM平台http://blog.csdn.net/gatieme/article/details/23106529
PC平台(X11平台)
PC平台(X11平台):在linux中全安装qt,用它编译好程序后,在X11环境中直接用“./”就可运行。
具体安装配置过程请看这里http://blog.csdn.net/gatieme/article/details/22915759
注意
值得注意的是前面我们编译x86的版本是基于frame-buffer机制的,运行使用使用qvfb,它是一个x11平台的模拟器,用来模拟qt embedded的工作流程。因此qvfb必须用x11平台的qt版本来编译
或者我们干脆可以直接从包管理器中下载一个qvfb