Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1682858
  • 博文数量: 311
  • 博客积分: 7778
  • 博客等级: 少将
  • 技术积分: 4186
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-09 19:59
个人简介

蓝点工坊(http://www.bluedrum.cn) 创始人,App和嵌入式产品开发。同时也做相应培训和外包工作。 详细介绍 http://pan.baidu.com/s/1y2g88

文章存档

2012年(3)

2011年(115)

2010年(170)

2009年(23)

分类: 嵌入式

2011-08-20 15:33:20

Andrew Huang 转载请注明作者及联络方式

qtopia 2.2 是很老的平台的,以前也就移植,现在为测试,自已再整理一下。

一。准备工作
    一般开发板光盘都带了,
    解压: tar xvf qtopia-2.2.0.tar.bz2
    

二.移植
   
   完全重编译脚本
     
  1. #!/bin/bash
  2. export LANG=en_US.UTF-8
  3. make clean
  4. echo yes | ./configure -qte '-embedded -no-xft -qconfig qpe -depths 16,32 -system-jpeg -qt-zlib -qt-libpng -gif -no-g++-exceptions -no-qvfb -xplatform linux-arm-g++ -tslib' -qpe 'edition pda -displaysize 320x240 -fontfamilies "helvetica fixed micro smallsmooth smoothtimes unifont" -xplatform linux-arm-g++ -luuid' -qt2 '-no-opengl -no-xft' -dqt '-no-xft -thread'
  5. make && make install
其中 export LANG 主要显示错误英文提示,
 这个脚本是完全编译,时间较长,在第一次编译成功后,以后每次修改qt库的源码只需要make 和make install

 
三.运行qtopia 桌面。
  
   参考如下脚本
  
  1. #!/bin/sh
  2. export QT_BASE=/mnt/nfs/rom/qtopia-2.2.0
  3. export TSLIB_TSDEVICE=/dev/input/event0
  4. export TSLIB_CONFFILE=/usr/local/etc/ts.conf
  5. export TSLIB_PLUGINDIR=/usr/local/lib/ts
  6. export TSLIB_CALIBFILE=/etc/pointercal
  7. export QTDIR=$QT_BASE
  8. export QPEDIR=$QT_BASE
  9. export PATH=$QTDIR/bin:$PATH
  10. export LD_LIBRARY_PATH=$QTDIR/lib:/usr/local/lib:$LD_LIBRARY_PATH
  11. export CAMERA_DEVICE=/dev/video2
  12. export QWS_MOUSE_PROTO="TPanel:/dev/input/event0"
  13. if [ -e /etc/pointercal -a ! -s /etc/pointercal ] ; then
  14. rm /etc/pointercal
  15. fi
  16. export QWS_KEYBOARD=TTY:/dev/tty1
  17. export KDEDIR=/opt/kde
  18. export HOME=/root
  19. #exec $QPEDIR/bin/qpe 1>/dev/null 2>/dev/null
  20. exec $QPEDIR/bin/qpe

四.编译应用程序:
    在编译应用程序时,首先Qtopia 库和头文件必须编译好。这里假设安装在
       /home/huisen/rom/qtopia-2.2.0, 
    
   必须设置一些环境变量,否则将与桌面QT有冲突,
    
  1. export PRJ_HOME=/home/huisen/rom/qtopia-2.2.0
  2. export QPEDIR=$PRJ_HOME/qtopia
  3. export QTDIR=$PRJ_HOME/qt2
  4. export TMAKEDIR=$PRJ_HOME/tmake
  5. export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++
  6. export PATH=$QTDIR/bin:$PATH
  7. export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
    假设上述脚本名为 setQteHxy

   在编译QT程序前,必须在shell中运行 . setQteHxy 注意. 与脚本名中有一个空格!!
    
五。编译运行独立运行程序
    必须注意Qtopia的桌面应用程序和独立运行程序两者写法是有区别的,把独立程序强行安装QTOPIA桌面上可以运行,但是点关闭键不能退出后重新自动调用应用程序。所以必须要区分两种。
   独立运行程序的Application程序的基类是 qtapplication,主程序有如下模板,其中mainForm 是主窗口名字.
   
  1. #include <qapplication.h>
  2. #include "main_form.h"

  3. int main( int argc, char ** argv )
  4. {
  5.     QApplication a( argc, argv );
  6.      mainForm w;
  7.     w.show();
  8.     
  9.    a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) );
  10.     
  11.     return a.exec();
  12. }
   
   独立运行的QT程序需要一个独立的脚本来运行QT
   
  1. #使用NFS路径进行测试

  2. export set QT_BASE=/mnt/nfs/rom/qtopia-2.2.0
  3. export set HOME=/root
  4. export set QTDIR=${QT_BASE}/qt2
  5. export set QPEDIR=${QT_BASE}/qtopia
  6. #export set QWS_KEYBOARD="USB:/dev/input/event2"
  7. export set QWS_MOUSE_PROTO="TPanel:/dev/input/event0 USB:/dev/input/mice"
  8. #export set QWS_MOUSE_PROTO="USB:/dev/input/mice"
  9. export set PATH=$QPEDIR/bin:$PATH

  10. export set LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/lib:/usr/local/lib
  11. echo $LD_LIBRARY_PATH
  12. ./test_hxy -qws

六.编译运行Qtopia桌面程序
     如果确定要在桌面运行,主程序需要如下模板编写,其中应用程序的基类是 qpeapplication。
   mainForm 主窗口类名

   两者从外观就可以看出来,Qtopia程序是带暗纹的,并且OK按钮,而独立运行的QT程序是蓝色的标题栏。
      
  1. #include "main_form.h"
  2. #include <qtopia/qpeapplication.h>

  3. QTOPIA_ADD_APPLICATION("mainForm",mainForm)
  4. QTOPIA_MAIN
阅读(1326) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~