交叉编译qtopia-2.2.0(2.2.0版本里面集成了qt\tmake\qtopia)解压qtopia-free-src-2.2.0.tar.gz,将其mv
qtopia-free-2.2.0
到/root/host /qtopia-free-2.2.0
cd /root/host/qtopia-free-2.2.0
./configure
make 得到本机运行版本uic 工具解压qtopia-free-src-2.2.0.tar.gz 将其mv至 /root/2410s/qtopia-free-2.2.0
cp /root/host/qtopia-free-2.2.0/qt2/bin/uic/root/2410s/qtopia-free-2.2.0/qt2/bin/ 如上所述arm-linux-gcc 已安装到/usr/local/arm/2.95.3/bin/,并设置$PATH变量
export PATH=/usr/local/arm/2.95.3/bin:$PATH 建立PDA安装目录
mkdir /root/2410s/qtopia
(make install的安装目录)
cd /root/2410s/qtopia-free-2.2.0
修改文件
vi /root/2410s/qtopia-free-2.2.0/qt2/src/kernel/qwsmouse_qws.cpp 其中有3处/ect/pointercal 将其改为/mnt/yaffs/pointercal
(这里因为我的根文件系统不可写,默认的/etc下不可写,所以在校准的时候把pointercal方到了/mnt/yaffs/下,这里按照你自己校准文件的存放路径改即可,如果是可读根文件系统,就不用修改了) 修改文件
vi /root/2410s/qtopia-free-2.2.0/qtopia/mkspecs/qws/linux-arm-g++/qmake.conf 将此行
QMAKE_LIBS_QT = -lqte 修改为
QMAKE_LIBS_QT = -lqte -lpng -lts -lz -luuid -ljpeg 再:
export QTDIR=/root/2410s/qtopia-free-2.2.0/qt2
export QPEDIR=/root/2410s/qtopia-free-2.2.0/qtopia
export LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/lib:$LD_LIBRARY_PATH
export TMAKEDIR=/root/2410s/qtopia-free-2.2.0/tmake
export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++****************在/root/2410s/qtopia-free-2.2.0/qtopia/src/qt/qconfig-qpe.h的末尾加上,这是使qt自己支持触摸屏,我也加了。#define QT_QWS_IPAQ
#define QT_QWS_IPAQ_RAW
***********************8
cp
/root/2410s/qtopia-free-2.2.0/qtopia/src/qt/qconfig-qpe.h/root/2410s/qtopia-free-2.2.0/qt2/src/tools
cd $QPEDIR/src/libraries/qtopia
cp custom-linux-ipaq-g++.cpp custom-linux-arm-g++.cpp
cp custom-linux-ipaq-g++.h custom-linux-arm-g++.h 开始configure了
cd /root/2410s/qtopia-free-2.2.0
./configure -qte "-embedded -xplatform linux-arm-g++ -qconfig qpe -no-qvfb -depths 8,16,24,32 -system-jpeg -system-libpng -system-zlib -tslib -gif -thread -no-xft –release -I/root/2410s/arminclude -L/root/2410s/armlib -lpng -lts -lz –luuid -ljpeg" -qpe '-xplatform linux-arm-g++ -edition pda –displaysize 640x480 -I/root/2410s/arminclude -L/root/2410s/armlib-prefix=/root/2410s/arm/qtopia' 最后
make
make install/root/2410s/下面有一个qtopia目录,是所需的文件在/root/2410s/qtopia/lib/目录下面看到libqte.so libqte.so.2 libqte.so.2.3libqte.so.2.3.12 这四个文件. 这是编译qte的库文件 拷贝库与触摸屏校准/测试程序
mkdir /root/2410s/qtopia/bin/tests
mkdir /root/2410s/qtopia/lib/ts
cp /root/2410s/tslib-1.3/tests/.libs/ts_* /root/2410s/qtopia/bin/tests
cp /root/2410s/tslib-1.3/src/.libs/libts-0.0.so.0* /root/2410s/qtopia/lib
cp /root/2410s/tslib-1.3/src/.libs/libts.so /root/2410s/qtopia/lib
cp /root/2410s/tslib-1.3/plugins/.libs/*.so /root/2410s/qtopia/lib/ts
cp /root/2410s/armlib/*.so* /root/2410s/qtopia/lib
//所有需要的支持的库文件将qtopia复制到共享文件夹/root/share/
cp -r /root/2410s/qtopia
/root/share/注意 ::::
把文件/root/2410s/tslib-1.3/etc/ts.conf文件拷贝到你的板子的/etc/目录下cp /root/2410s/tslib-1.3/etc/ts.conf
/root/share****************首先要建立宿主机和开发板的通讯,假设本机的ip 地址为192.168.0.155 并且/root/share 为共享文件夹。*******************将/root/share设置为共享目录,可通过nfs来访问配置NFS(网络文件系统)使计算机系统通过网络访问其它计算机系统的目录和文件
远程访问控制
修改etc/export指定文件夹共享可访问
最后一行加上
/root/share 192.168.0.* (rw,sync,no_root_squash)
共享目录 可访问主机ip地址 访问方式
执行minicomminicom 启动nfs服务(也可在一个文件中加上语句,不用每次敲击命令)
nfs /etc/rc.d/init.d/nfs
start在开发板终端输入命令
ifconfig eth0 192.168.0.12 (如果开发板不能自动得到ip,需要设置)
mount –t nfs –o nolock 192.168.0.155:/root/share /mnt/nfs 将文件复制到开发板上mount –t nfs –o nolock 192.168.0.155:/tmp/qtmp /tmp
(因为qte在板上跑会创建/tmp/qtembedded-0,而我的根文件系统为只读文件系统cramfs,这句是为了使/tmp可写,要不然会出现错误Cannot create Qt/Embedded data directory: /tmp/qtembedded-0。如果是可写文件系统不用这一步。) 把文件/root/share/tslib/etc/ts.conf文件拷贝到你的板子的/mnt/yaffs目录下
cp /mnt/nfs/ts.conf /mnt/yaffs(默认是/etc目录下面的,我这里需要修改也是因为根文件系统不可写的缘故)运行[以下操作在目标板上进行]: 在你的板子上设置运行环境变量export QTDIR=/mnt/nfs/qtopiaexport QPEDIR=/mnt/nfs/qtopiaexport QWS_MOUSE_PROTO=TPanel:/dev/touchscreen/0rawexport LD_LIBRARY_PATH=/mnt/nfs/qtopia/libexport TSLIB_TSEVENTTYPE=H3600
对tslib中的设备结构体定义 export TSLIB_CONSOLEDEVICE=none tslib运行需要的控制台,这里就是LCD屏幕 ,设定控制台设备为none,否则默认为/dev/ttyexport TSLIB_FBDEVICE=/dev/fb0
指定帧缓冲设备(我的开发板上只有/dev/fb/0,所以做了一个链接
ln -s /dev/fb/0 /dev/fb0)export TSLIB_TSDEVICE=/dev/touchscreen/0raw指定开发板对应触摸屏设备节点文件export TSLIB_CALIBFILE=/mnt/yaffs/pointercal指定触摸屏校准文件pintercal的存放位置(默认是在/etc下面,可写文件系统为/etc/pointercal)export TSLIB_CONFFILE=/mnt/yaffs/ts.conf 指定TSLIB配置文件的位置export TSLIB_PLUGINDIR=$QTDIR/lib/ts 指定触摸屏插件所在路径***************************如果为可写根文件系统,可以修改开发板/etc/profile文件,将这些环境变量写入,就不用每次设置了***************************** 校准屏幕(5点校准)
cd /mnt/nfs/qtopia/bin/tests
./ts_calibrate 会陆续在LCD的4个角和中点出现光标,点击光标进行校准,生成校准文件 再运行测试
/ts_test 这时LCD上出现光标,你的手指点哪里光标就会跟到哪里才成功 (如果有问题,参考终端的打印信息,坐标的值) 需要时序信息。如果是可写rootsf,新建/urs/share文件夹,按照上面的方法,将本机/root/2410s/qtopia/etc/zoneinfo文件夹拷贝到/urs/share/下 如果是只读rootfs,要重新制作镜像文件烧写(还需要支持输入法文件,运行pda时会有warnig) 运行PDA
cd ..
./qpe出现”Tap anywhere to continue”,然后进行qpe5点校准,进入qpe