Qtopia-4.2.4及tslib-1.4移植

1475阅读 0评论2009-12-17 天海一线
分类:嵌入式

主机环境:CentOS5.4
目标板:s3c2410开发板(64M SDRAM,64M NAND FLASH)
Qtopia版本:qtopia-opensource-src-4.2.4.tar.gz
Tslib版本:tslib-1.4.tar.gz
交叉编译工具:arm-linux-gcc-3.4.1

目录结构:
Qtopia源码-》/home/gyh/qtopia/source
Qtopia编译目录-》/home/gyh/qtopia/target
Tslib目录-》/home/gyh/qtopia/tslib-1.4
Qtopia安装目录-》/usr/local/qtopia
Tslib安装目录-》/home/gyh/qtopia/tslibprefix
nfs目录-》/home/gyh/nfs

一、Tslib移植
cd /home/gyh/qtopia/tslib-1.4
./autogen.sh
echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
./configure --host=arm-linux --prefix=/home/gyh/qtopia/tslibprefix --cache-file=arm-linux.cache
make
make install
cp -rf ../tslibprefix /home/gyh/nfs/tslib

二、Qtopia移植

1、
cd source
cd src/libraries/qtopiabase/
cp custom-linux-cassiopeia-g++.h custom-linux-arm-g++.h
cp custom-linux-cassiopeia-g++.cpp custom-linux-arm-g++.cpp

2、裁剪Qtopia
vi qtopiacore/qconfig-qpe.h
首先注释掉关于鼠标光标的宏定义,让程序运行时,触摸屏中央有光标出现:
            // Qtopia Core
            /*
            #ifndef QT_NO_QWS_CURSOR
            # define QT_NO_QWS_CURSOR
            #endif
            */
            .....................(省略)
            /*
            #ifndef QT_NO_QWS_MOUSE
           # define QT_NO_QWS_MOUSE
            #endif
            #ifndef QT_NO_QWS_MOUSE_AUTO
            # define QT_NO_QWS_MOUSE_AUTO
            #endif
            */ 
其它宏定义根据需要进行注释。 
保存后将qconfig-qpe.h拷贝到global目录。
cp qtopiacore/qconfig-qpe.h qtopiacore/qt/src/corelib/global/qconfig-qpe.h (必须进行的操作)

vi qtopiacore/qt/src/corelib/global/qfeatures.h
注释掉如下内容:
            /*
            #if !defined(QT_NO_QWS_CURSOR) && (defined(QT_NO_CURSOR))
            #define QT_NO_QWS_CURSOR
            #endif
            */ 
保存退出。

vi qtopiacore/qt/src/corelib/global/qglobal.h
注释掉以下内容:
            //# define QT_NO_QWS_CURSOR

3、基于编译器的修改
vi qtopiacore/qt/tools/qvfb/qvfbshmem.cpp

           //#include

vim src/libraries/qtopiabase/qmemoryfile_unix.cpp +128
修改f = ::open(tmpFile.toLatin1(), O_CREAT | O_WRONLY,0777);

4、编译
cd /home/gyh/qtopia/target
../source/configure -release -image /usr/local/qtopia -prefix /usr/local/qtopia -xplatform linux-arm-g++ -arch arm -no-qvfb -displaysize 240x320 -no-modem -extra-qtopiacore-config "-release -xplatform qws/linux-arm-g++ -embedded arm -qconfig qpe -depths 4,8,16,32 -qt-sql-sqlite -no-mouse-linuxtp -qt-mouse-tslib -I/home/gyh/qtopia/tslibprefix/include -L/home/gyh/qtopia/tslibprefix/lib " 2>../configureERR.tx

make
sudo make install

5、拷贝时区数据
cp -rf /home/gyh/qtopia/source/etc/zoneinfo /home/gyh/nfs

6、编辑启动脚本
vi /home/gyh/nfs/qtopia.sh

#!/bin/ash
export TSLIB_ROOT=/usr/local/tslib
export TSLIB_TSDEVICE=/dev/event0
export LD_LIBRARY_PATH=/usr/local/tslib/lib:$LD_LIBRARY_PATH
export QWS_SIZE=240x320
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_PLUGINDIR=/usr/local/tslib/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_CONFFILE=/usr/local/tslib/etc/ts.conf
export POINTERCAL_FILE=/usr/local/tslib/etc/pointercal
export QWS_MOUSE_PROTO=Tslib:/dev/event0
export TSLIB_CALIBFILE=/usr/local/tslib/etc/pointercal
export TSLIB_TSEVENTTYYPE=H3600i
export LD_LIBRARY_PATH=/usr/local/qtopia/lib:$LD_LIBRARY_PATH
export QWS_SW_CURSOR
export set HOME=/usr/local
export set QPEDIR=/usr/local/qtopia
export set QWS_KEYBOARD="TTY:/dev/tty1""
export QWS_DISPLAY="LinuxFb:mmWidth35:mmHeight45:0"

7、创建合适的目录
cd /home/gyh/nfs
mkdir usr
mkdir usr/local usr/share
mkdir usr/share/etc
mv -f tslib usr/local
mv -f zoneinfo usr/share/etc
cp -rf /usr/local/qtopia usr/local/
mv qtopia.sh usr/local

8、启动Qtopia
挂载nfs目录
mount -t nfs -o nolock 192.168.0.103:/home/gyh/nfs/usr /usr
cd /usr/local
./qtopia.sh
/usr/local/qtopia/bin/qpe &
出现界面。

(注:本文参考华清远见曹忠明老师的一篇文章,在此对他进行感谢,原文地址:http://blog.mcuol.com/User/farsight2009/Article/14846_1.htm

上一篇:unix环境高级编程II源代码编译
下一篇:虚拟机安装CentOS5.4