Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1242759
  • 博文数量: 298
  • 博客积分: 10050
  • 博客等级: 上将
  • 技术积分: 3277
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-14 13:36
文章分类
文章存档

2015年(7)

2012年(1)

2010年(5)

2009年(55)

2008年(73)

2007年(160)

我的朋友

分类: LINUX

2007-05-13 22:20:38

交叉编译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.3

libqte.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地址 访问方式

 

   执行minicom

 

minicom

 

   启动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/qtopia

 

export QPEDIR=/mnt/nfs/qtopia

 

export QWS_MOUSE_PROTO=TPanel:/dev/touchscreen/0raw

 

export LD_LIBRARY_PATH=/mnt/nfs/qtopia/lib

 

export TSLIB_TSEVENTTYPE=H3600  tslib中的设备结构体定义

 

export TSLIB_CONSOLEDEVICE=none tslib运行需要的控制台,这里就是LCD屏幕 ,设定控制台设备为none,否则默认为/dev/tty

 

export 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

    会陆续在LCD4个角和中点出现光标,点击光标进行校准,生成校准文件

     再运行测试

     /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

 

 

************************

感谢nanfanskyoceanheart_cai的帮助!

nanfansky是一个骨灰极刀子嘴 豆腐心的 超级热心的同志~ 呵呵...

 

推荐论坛

Qt/Qtopia中文论坛

中国Linux论坛 

 
讲解ppt下载:
文件: qtopia移植技术文档.rar
大小: 154KB
下载: 下载
阅读(3760) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-11-18 10:29:29

你好,能交个朋友吗?我现在乜在做QTOPIA的移植,但遇了不少问题,可以交流一下吗? 我的email:jiexkj@126.com

chinaunix网友2008-04-23 10:00:54

你好! 以前做tslib的时候来过你的博客,现在要移植qtopia2.2.0.又来向你请教了。 我碰到一个这样的问题:我把交叉编译好的qtopia2.2.0放到开发板上,如果通过手动设定环境变量和启动qpe的时候没有问题。但是我想要开机就运行qpe。我在启动文件中加入环境变量设置和启动选项。qpe也能运行,但是在选择语言一项死活到不了下一项。 不知道你有没有碰到过。多谢! 我的email是:zhanglei.dut@gmail.com.