Chinaunix首页 | 论坛 | 博客
  • 博客访问: 502636
  • 博文数量: 92
  • 博客积分: 3146
  • 博客等级: 中校
  • 技术积分: 2314
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-27 10:20
文章分类

全部博文(92)

文章存档

2014年(3)

2013年(17)

2012年(16)

2011年(22)

2010年(34)

分类: 嵌入式

2010-11-10 17:09:42

一、QT-X11环境的配置
1、解压qt-x11-opensource-src-4.4.3.tar.gz
2、cd 解压了的目录 QT-X11
3、  #./configure       //生成Makefile
     #make  (或者:gmake)
     #make install   //安装完后会生成目录/usr/local/Trolltech/QT-4.4.3 ,这时刚才解压完得到的QT-X11可以不要了。
4、设置环境变量:
    在/etc/profile 加入:
   
 #for QT4
export QTDIR=/usr/local/Trolltech/Qt-4.4.3
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export PATH=$QTDIR/bin:$PATH
export QMAKESPEC=$QTDIR/mkspecs/linux-g++   //生成Makefile的配置文件的路径
5、#source /etc/profile  使环境变量生效

6、用一个例子测试是否OK:
   写一个 a.cpp
   #qmake -project  //生成 a.pro
   #qmake    //生成  Makefile
   #make
   #./a
如果打开designer 的窗口很乱,可以设置:进入edit--preferences,user interface mode 选择docked window.
  
  
二、QT-em环境的配置
1、把arm-linux-gcc版本:3.3.2  放目录/usr/local/arm ,并:export PATH=/usr/local/arm/3.3.2/bin:$PATH
2、解压qt-embedded-linux-opensource-src-4.4.3.tar.gz  得qt-embed
3、添加qconfig-local.h,用于触摸屏加载,并将该文件放在解压了的qt-embed的/src/tools目录下面用于对qte库进行裁减
(位于QTDIR/src/tools/qconfig-XXX.h,其XXX为自定义的 名字,该特征字可以在configure时用-qconfig XXX指定)
4、修改qmouselinuxtp_qws.h文件(解压后搜索 ls -R|grep qmouselinuxtp_qws.h ,会有三个文件,其中2个是仅仅是包含第3个。找到原文件(../src/gui/embedded/qmouselinuxtp_qws.h))
 加入:
 #define QT_QWS_IPAQ
 #define QT_QWS_IPAQ_RAW
5、配置:
(1)在PC上编译时,可不用考虑qte库的大小,只用指定编译平台即可
#./configure -xplatform qws/linux-arm-g++ -embedded arm -qconfig local -release -shared -qt-mouse-linuxtp -little-endian  -no-qt3support -qt-freetype  -qvfb -depths 4,8,16,32  -no-feature-QWS_CURSOR
                                                                                                                                         
 
    解析各个参数的意义(键入./configure -help来获得一些帮助信息。 ):
    -xplatform      #the target platform when cross-compiling
        qws     #qws选项的含义是使这个应用程序成为服务器。
                QT Embedded也是一种C/S结构,需要有一个QT application做QWS Server,
                程序启动时带有-qws参数的就是QWS Server,不带这个参数就是QWS Client。
                因此任何一个基于QT的application都可以做QWS Server。
                当然QWS Server一定先于QWS Client启动,否则QWS Client将启动失败。
                在实际应用中,会指定某个特殊的application做QWS Server,这个application一
                般还会管理一些其它的系统资源。

    -xplatform qws/linux-arm-g++ -embedded arm
                       #目标平台编译配置文件使用/mkspecs/qws/linux-arm-g++目录下的配置文件,嵌入式平台为arm
    
    -embedded arm       #specify your platform architecture
    
    -qconfig local     #使用配置文件qconfig-local.h,若使用qconfig-large.h配置文件,则使用-qconfig large选项。
    -release           #以发行版而非调试版来编译Qt开发工具及相应库。
    -shared            #所编译用来开发的Qt库及Qt开发工具的库是动态库
    
    -qt-mouse-linuxtp   #触摸屏协议支持linuxtp
    
        -little-endian     #小端格式存放代码
       
        -no-qt3support     #不提供对qt3函数支持
       
        -qt-freetype        #Use the libfreetype bundled with Qt.   
       
        -qvfb  -depths 4,8,16,32      指定Qt 嵌入式开发包生成虚拟缓冲帧工具qvfb,并支持4,8,16,32 位的显示颜色深度。
                                  (-no-qvfb  目标平台已支持framebuffer,因而不使用虚拟帧缓冲。)
                                  -qvfb:Qte特有的参数之一,默认是支持的。
        -no-feature-QWS_CURSOR    #去掉光标

6、#make
7、#make install
8、安装完成之后,会在生成下面目录:\usr\local\Trolltech\QtEmbedded-4.4.3-arm
  此目录有:
  1) bin   4个命令:moc qmake rcc uic
  2) demos  大的实例
  3) examples   分类的小例子
  4) include 包含的头文件
  5) lib  库文件
  6) mkspecs  生成Makefile的文件
  7) plugins
  8) translations
    按照此裁减方法可得到QtEmbedded-4.4.3-arm的/lib, /plugins文件夹的内容如下:
    (1)lib
    fonts      #只留下支持中文显示的文泉驿字体 wenquanyi_120_50.qpf
    pkgcongig   #相应的.pc文件能自动获得链接参数,如库及依赖的其它库的位置,文件名及其它一些连接参数。请看Makefile好助手:pkgconfig.mht
    libQtCore
    libQtGui
    libQtNetwork
    libQtScript  #(script库)可删掉
    libQtSvg     #(svg库:可变动的向量绘图形文件)可删掉
    libQtTest    #可删掉可删掉
    libQtXml     #(xml库)可删掉
    
    以上可删除的几个库其实可以在配置时加入以下选项来去除,但是编译有错,要修改太多文件,所以当需要移植到板上的文件系统时,这几个库可手工删除:
           -no-assistant-webkit   (script库)
           -no-webkit    (network库)
           -no-svg       (svg库:可变动的向量绘图形文件)
           -no-xmlpatterns  (xml库)
     (2)plugins
     accessible     #可删掉 
     iconengines    #svg库:可变动的向量绘图形文件 可删掉
     imageformats   #对各种格式的图片的支持
     sqldrivers     #sql数据库 可删掉

9、在/etc/profile 加入上配置交叉编译环境(编译时用):
export QTDIR=/usr/local/Trolltech/QtEmbedded-4.4.3-arm
export PATH=$QTDIR/bin:/usr/local/arm/3.3.2/bin:$PATH             
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QMAKESPEC=$QTDIR/mkspecs/qws/linux-arm-g++  #目标平台编译配置文件使用/mkspecs/qws/linux-arm-g++目录下的配置文件
                                                   #这个变量目的是调用此目录下的脚本,让QMAKE自动生成makefile

10、移植QT到目标板的文件系统:把编译好的QtEmbedded-4.4.3-arm的/lib, /plugins文件夹拷贝到目标板的文件系统(wanc2440)中制定目录下:/usr/local/Trolltech/$QTEDIR
这里$QTEDIR目录名称与在X86里安装的文件目录名称一致,例如QtEmbedded-4.4.3-arm:

11、然后配置目标板的文件系统(wanc2440)环境变量,修改.bashrc文件(QT程序运行时使用):
环境变量作用:以后你只要 在终端输入qmake或make或designer 等指令就可以直接使用qmake等工具了,这就是环境变量的作用。)
//鼠标(或者触摸屏)的设备文件,一般是/dev/mouse,还可能是/dev/ps2(ps类型的鼠标),ttyS*(串口鼠标),而对于触摸屏,则会是/dev/Tpanel(在2.4.*的qte版本中).
ln -s /dev/touchscreen/0 /dev/touchscreen/0raw
export QWS_MOUSE_PROTO=LinuxTP:/dev/h3600_tsraw         #设定鼠标的类型和设备.格式
export QTDIR=/usr/local/Trolltech/QTEmbedded-4.4.3-arm
export LD_LIBRARY_PATH=$QTDIR/lib:LD_LIBRARY_PATH
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin

12、配置NFS 服务:
  目录 :arm文件系统(gec2440)所在目录
  主机 : *
  基本权限: 读写
  
  用户访问: 将远程根目录用户视为本地用户
  
  
13、配置U-BOOT启动参数
 setenv bootargs root=/dev/nfs nfsroot=192.168.50.102:/forARM/gec2440 ip=192.168.50.7 init=/linuxrc console=ttySAC0,115200 display=sam320

14、更改arm文件系统(gec2440) /usr/etc/rc.local 文件的
  /sbin/ifconfig eth0 192.168.50.7 netmask 255.255.255.0 up 
  使IP为开发板的IP

15、在QT-X11上编译好的文件,要移植到开发板上:
  把/etc/profile 环境变量改为QT-E的,
  #qmake -project
  #qmake
  #make
  把可执行文件放到GEC2440的目录下,用NFS启动。
  #./aa -qws

16、 #make configclean 可将前面所有的配置都清除掉。
-------------------------------qconfig-local.h------------------
 
#ifndef CONFIG_LOCAL
#define CONFIG_LOCAL
#define QT_QWS_IPAQ
#define QT_QWS_IPAQ_RAW
#如果定义了上述的两个IPAQ相关的宏,其默认打开设备文件/dev/h3600_tsraw。如果只定义QT_QWS_IPAQ,则打开设备文件为/dev/h3600_ts。
#要在开发板的文件系统的 .bashrc 文件设定环境变量:export QWS_MOUSE_PROTO=LinuxTP:/dev/h3600_tsraw 。
 
#define QT_NO_QWS_CURSOR   #让程序运行时,触摸屏中央无光标出现:
#define QT_NO_QWS_MOUSE_AUTO #去掉鼠标自动识别功能,(在实际中,这一步可以不要,但对于缩减QTE的大小很有帮助)
#endif
阅读(2381) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~