-- 目录 --
1. 简介
2. 准备工作
2.1 目标
2.2 软件包
2.3 环境的建立
3. PC平台编译
3.1 编译QT
3.2 编译QTOPIA
3.3 测试QTOPIA
4. 目标平台交叉编译
4.1 交叉编译QT
4.2 交叉编译QTOPIA
5. 移植QT中的相关设备接口
5.1 鼠标
5.2 触摸屏
6. 移植QTOPIA中的相关设备接口
6.1 电源管理设备
7. 编写QT程序并移植
8. 编写QTOPIA程序并移植
X. tips
-- 正文 --
1. 简介
QT是目前在linux上使用较广的一个图形系统。用户经常配合KDE桌面环境来使用。需要注意的是我们看到的并操作的是KDE,而不是QT。QT只是一套库函数(类库),KDE才是可执行程序.同时KDE为了其他程序方便的对其操作,也提供一套库函数(类库)。
在PC机上的QT是基于X11图形系统的,在嵌入设备中往往不需要这么累赘,只需使用QTE(QT Embedded)即可包括PC平台中X11和QT库的功能。
另一方面,嵌入设备受许多条件的限制,桌面系统也不能直接使用PC机上已有的系统。QTOPIA就是相当于KDE的桌面系统.根据具体嵌入设备的需要可以配置成phone和pocket pc两种。
2. 准备工作
2.1 目标
首先要明确将要干的是什么,将怎么做。
我们的目标很明确——就是在自己的开发板上使用基于QTE的桌面系统QTOPIA。
我们的工作往往是先在PC完成以后移植到ARM平台上;先编译好QTE的库,再编译QTOPIA。因为这个系统和具体的设备有关(例如:触摸屏、时钟、电源管理设备等),所以最后还需要做设备接口的移植工作。
2.2 软件包
系统平台:RedHat 9(完全安装)
qt-embedded-2.3.7.tar.gz (qte的库)
qt-x11-2.3.2.tar.gz (为了生成相应的qtdesigner和qvfb)
qtopia-free-1.7.0.tar.gz (qte的桌面环境程序)
tmake-1.11.tar.gz (编译时会用到)
e2fsprogs-1.35.tar.gz (只使用其中的uuid的库)
当下载完这些包以后我们先建立一个工作环境。假设所有软件包都下载在用户目录下,通常都是/root。
2.3 环境的建立
# cd ~ //进入目录
# mkdir x86-qtopia //建立目录
# tar zxvf qt-x11-2.3.2.tar.gz //解压
# mv qt-2.3.2 qt-x11 //改名
# cd x86-qtopia
# tar zxvf ../tmake-1.11.tar.gz
# tar zxvf ../qt-embedded-2.3.7.tar.gz
# tar zxvf ../qtopia-free-1.7.0.tar.gz
# tar zxvf ../e2fsprogs-1.35.tar.gz //解压
# mv tmake-1.11 tmake //改名
# mv qt-2.3.7/ qt
# mv qtopia-free-1.7.0 qtopia
# mv e2fsprogs-1.35 e2fsprogs
# cp x86-qtopia arm-qtopia -rf
记住,用户目录下的x86-qtopia目录是PC机上编译的工作环境,arm-qtopia是arm平台的交叉编译工作环境,qt-x11是两者公用的。
接下来还必须编译qt-x11,主要是为了编译生成其中的qtdesigner和qvfb。qvfb程序在系统中并未安装,需要我们自己编译。 qtdesigner是和qt库的版本是相关的,当我们使用PC机上和QTE版本不符的qtdesigner时,可能在PC机上的qt-x11能使用的控件在QTE上并未实现,导致应用程序编译不成功。所以,我们使用2.3版本的QTE时,必须使用相同版本的qt-x11编译生成的qtdesigner和 qvfb。
# cd ~/qt-x11
# export QTDIR=$PWD
# echo yes | ./configure -static -no-xft -no-opengl -no-sm
# make -C src/moc
# cp src/moc/moc bin
# make -C src
# make -C tools/designer
# make -C tools/qvfb
# cp tools/qvfb/qvfb bin
# strip bin/uic bin/moc bin/designer bin/qvfb