Qt2.2.0移植到ARM9(四)(JZ2440----S3c2440)
Linux:Ubuntu9.10
编译器版本:arm-linux-gcc-4.3.2
Qt:qtopia-free-src-2.2.0.tar.gz
依赖库:libjpeg库(参考移植(一));uuid库。
操作参考《嵌入式Linux应用开发完全手册》
1、安装qtopia2.2.0
(1)解压
qtopia-free-src-2.2.0.tar.gz位于系统的/work/GUI/qtopia目录下。
解压命令:$tar zxvf qtopia-free-src-2.2.0.tar.gz
(2)编译、安装jpeg库(省略,之前已完成)
(3)编译、安装uuid库(省略,之前已完成)
(4)对qtopia修改:
$cd qtopia-free-src-2.2.0 $patch -p1<../qtopia-free-2.2.0_100ask.patch
(5)修改配置文件
修改/qtopia-free-src-2.2.0/qtopia/qrc/qt/qconfig-qpe.h文件。
(6)针对交叉编译器的版本修改代码
修改/qtopia-free-src-2.2.0/qt2/tools/qembed/目录下的Makefile.in文件。
修改:
(1)/qtopia-free-src-2.2.0/qt2/src/tools/目录下的qvaluelist.h。 (2)/qtopia-free-src-2.2.0/qt2/src/kernel/目录下的qwindowsystem_qws.h。 (3)/qtopia-free-src-2.2.0/qtopia/src/libraries/qtopia/backend/目录下的event.cpp。
(7)修改导致“error:extra qualification”错误的文件
修改:/qtopia-free-src-2.2.0/qtopia/src/libraries/qtopia/目录下的qdawg.cpp。 /qtopia-free-src-2.2.0/qtopia/src/libraries/qtopia2/thumbnailview_p.h。 /qtopia-free-src-2.2.0/qtopia/src/libraries/qtopiapim/目录下abtable_p.h。 /qtopia-free-src-2.2.0/qtopia/src/libraries/qtopiapim/目录下numberentry_p.h。
后面还有一些,参考《开发手册》
2、配置、编译、安装qtopia
(1)配置qtopia-free-src-2.2.0
(2)执行编译
$sudo make
$sudo make install
在以下目录中生成可执行文件和库文件。
/qtopia-free-src-2.2.0/qtopia/bin
/qtopia-free-src-2.2.0/qtopia/lib
/qtopia-free-src-2.2.0/qtopia/plugins
字库文件在/qtopia-free-src-2.2.0/qt2/lib/fonts目录下。
3、在开发板上安装、运行qtopia
借助fs_mini_mdev根文件系统的压缩包fs_mini_mdev.tar.bz2制作qt2.2.0文件系统.
fs_mini_mdev.tar.bz2位于/work/system/目录下
(1)解压、重命名
$tar jxvf fs_mini_mdev.tar.bz2 $sudo cp -rf jxvf fs_mini_mdev fs_qt $sudo chown book:book fs_qt -R
(2)复制qtopia所依赖的jpeg库、uuid库
$cp libjpeg.so* /work/system/fs_qt/lib -d $cp libuuid.so* /work/system/fs_qt/lib -d
(3)复制字库
$cp -rf /qtopia-free-src-2.2.0/qt2/lib/fonts /qtopia/image/opt/Qtopia/lib $cp -rf /qtopia/image/opt /work/system/fs_qt
(4)创建时区文件
直接使用主机中的时区文件
$cd /work/system/fs_qt $mkdir -p usr/share/zoneinfo $cp -rf /usr/share/zoneinfo/America usr/share/zoneinfo $cp /usr/share/zoneinfo/zone.tab usr/share/zoneinfo
(5)伪造触摸屏校验文件
在开发板根文件系统中建立一个校验文件
$vim /etc/pointercal
其内容为:1 0 1 0 1 1 65536,它可以让系统不执行校验程序
(6)在根文件系统/bin目录下建立一个qpe.sh文件,它用来设置环境变量、启动Qtopia。
qpe.sh内容如下:
#!/bin/sh export HOME=/root export QTDIR=/opt/Qtopia export QPEDIR=/opt/Qtopia export QWS_DISPLAY=LinuxFb:/dev/fb0 export QWS_KEYBOARD="TTY:/dev/tty1" #export QWS_MOUSE_PROTO="USB:/dev/mouse0" export QWS_MOUSE_PROTO="TPanel:/dev/ts0" export PATH=$QPEDIR/bin:$PATH export LD_LIBRARY_PATH=$QPEDIR/lib:$LD_LIBRARY_PATH export TSLIB_TSDEVICE=/dev/ts0 export TSLIB_CONSOLEDEVICE=none export TSLIB_FBDEVICE=/dev/fb0 export TSLIB_CONFFILE=/etc/ts.conf export TSLIB_PLUGINDIR=/usr/share/ts/plugins export TSLIB_TSEVENTTYPE="H3600" $QPEDIR/bin/qpe &
解释:最后一行用于启动Qtopia。
(7)修改根文件系统的启动脚本
运行Qtopia时,需要用到临时目录/tmp,为减少Flash的擦写,在/tmp目录上挂接tmpfs文件系统。
首先建立/tmp目录
然后修改/work/system/fs_qt/etc/目录下的fstab文件,加入一行
最后修改启动脚本/work/system/fs_qt/etc/init.d/rcS,在最后加入以下一行。
还要修改它的属性
$chmod +x /work/system/fs_qt/bin/qpe.sh
将/work/system/fs_qt/etc/inittab中一行注释掉
(8)制作yaffs2映像文件
使用mkyaffs2image工具将/work/system/fs_qt/制作成yaffs2映像文件。
最后就是将fs_qt.yaffs2文件系统烧写到开发板中去。