Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1152909
  • 博文数量: 222
  • 博客积分: 5262
  • 博客等级: 大校
  • 技术积分: 3028
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-22 19:10
文章分类

全部博文(222)

文章存档

2012年(2)

2011年(192)

2010年(28)

分类: 嵌入式

2011-01-06 20:03:59

一、PC环境:

     Vmware6.5;

     操作系统为:ubuntu9.10;

     Gcc 版本是:4.4.1;

     交叉工具链是4.1.1 版本。

二、安装交叉工具链:

     QT4 最好使用GCC 4版本的工具链,这里提供的4.1.1版本的交叉工具链,工具链包是:4.1.1_softfloat_withlib.tar.bz2。

    将它解压到/opt/crosstool目录下,在/opt/crosstool目录下多了一个4.1.1的目录,这个就是4.1.1版本的交叉工具链。

     使用4.1.1版本的交叉工具链前,记得要设置PATH环境变量。

     export PATH=/opt/crosstool/4.1.1/bin:$PATH

 

三、ubuntu下的QT4开发环境搭建:

     开发QT4 应用程序需要安装qt4库、头文件和qt开发工具。一般的QT开发环境包括两部分:

     1 qt4库文件和头文件;

     2 qt4的开发工具如qmake、uic、moc等工具。

     下面介绍在ubuntu下大家qt4开发环境的方法,基于ubuntu平台的QT4开发环境搭建方式一般有3种:

     (1)使用 apt-get install XXX从ubuntu源服务器安装qt4开发工具:

          如:apt-get install libqt4-dev等。

          Ubuntu源服务器上提供的qt4的开发库和工具,可以自新立得软件管理器上搜索 qt4的库和开发工具,选择安装。

     (2)使用sdk开发工具包安装:

Qt从4.5版本之后提供了SDK安装包,可以从 下载SDK安装包,SDK安装包就包括qt4开发所需要的动态库、头文件和开发工具。其中还提供了qtcreatr集成开发环境,qtcreator是一个集开发、调试于一体的图像化的开发环境。

如:qt-sdk-linux-x86-opensource-2009.04.1.bin

    在终端上执行上面这个文件,会弹出安装导向对话框,根据对话框的提示,安装即可。 

     (3)从源码编译安装

从“ftp://ftp.qt.nokia.com/qt/source/”下载qt-x11的源码,如

下载qt-x11-opensource-src-4.5.3.tar.gz;

然后在ubuntu终端上,解压、配置、编译、安装。

步骤如下:

(1)    解压源码包:

        cd /home/farsight

        tar  zxvf qt-x11-opensource-src-4.5.3.tar.gz 

(2)    配置源码包:

                                cd qt-x11-opensource-desktop-4.5.3

               ./configure

               配置时,可以使用 –help查看配置选项。

        (3) 编译

               Make

               配置完之后,生产makefile文件,是用make编译

 (4)安装

       make install

默认情况下,会安装在/usr/local/Trolltech/Qt-4.5.2/目录,可以在配置是 使用-prefix选项配置安装目录。 

这里注意,源码包提供的qt4所以工具的源代码,如在源码的tools下有个qconfig工具,这个工具是用来细分配置qt4库的。在前面使用./configure 来配置属于粗略配置,可以使用qconfig工具进一步细分配置qt库。

一般情况下,使用粗略配置即可,但是在交叉编译qt4库时,希望进一步定制QT4库的大小,就可以使用qconfig工具了。Qconfig在下面配置编译qt-embedded是用到。

 

        qconfig工具只有从qt源码里获得,在前两种方式都为提供qconfig工具。

   因此,我们将配置工具qconfig编译,拷贝到/usr/local/bin目录下。

     make tools/qconfig

     cp tools/qconfig/qconfig /usr/local/bin/ 

     从源码安装qt时,在使用QT-4.5.3前需要设置以下环境变量:

                 export QTDIR=/usr/local/Trolltech/Qt-4.5.3

                 export PATH=$QTDIR/bin:$PATH

                 export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH             

     以上就是在ubuntu下安装qt4开发环境的三种方法。  

  

四、交叉编译qt-embedded

(1)交叉编译qt4库

     获得嵌入式linux版本的qt源码包之后,一般的步骤是解压、配置编译、安装。如下载的源码是qt-embedded-linux-opensource-src-4.5.3.tar.gz

     在解压源码之后,接下来就是配置qt-embedded。配置的一般方法是在源码目录下使用./configure 来粗略配置。要细微配置   QT4的可以使用qconfig工具。

     这里我们在解压qt-embedded源码后,使用qconfig工具配置qt4:

     cd qt-embedded-linux-opensource-src-4.5.3

     qconfig src/corelib/global/qfeatures.txt

     启动qconfig工具后,出现了一个配置界面,使用这个界面可以选择qt的配置选项。

     配置完之后,将配置保存为qconfig-local.h文件,保存在src/corelib/global/目录下;

     为了使QT4支持触摸屏,我们在qconfig-local.h添加两个宏定义:    #define QT_QWS_IPAQ

     #define QT_QWS_IPAQ_RAW

     这两个宏是表示使用qt源码中的自带触摸屏支持。

     如:我的qconfig-local.h文件内容如下:

     #ifndef QT_H

     #endif

     #ifndef QT_DLL

     #define QT_DLL

     #endif

     #define QT_QWS_IPAQ

     #define QT_QWS_IPAQ_RAW

     #define QT_NO_QWS_CURSOR

     #define QT_NO_QWS_MOUSE_AUTO

 

     除了使用qconfig工具得到qconfig-local.h文件之外,可以直接编辑生产qconfig-local.h文件。生成qconfig-local.h文件之后,接下来是使用./configure命令配置qt库;

     以下是qt-embedded的一些配置选项:

     ./configure -prefix /usr/qt-4.5.3 -debug -opensource -embedded arm -qconfig local -depths 4,8,16,32 -qt-mouse-linuxtp -qvfb

     这里的配置是:

     -prefix            指定安装路径是/usr/qt-4.5.3

     -debug             表示调试版本;

     -opensource       表示开源版本;

     -embedded arm     指定平台是arm;

     -qconfig local    使用细微配置文件qconfig-local.h

     -depths 4,8,16,32 指定美像素的位数

     -qt-mouse-linuxtp 指定使用qt指定的触摸屏    

     这里需要注意,指定平台是arm,默认的交叉工具链是arm-linux-开头的,而我的工具链是以arm-linux-gnu-开头,所以要修改 mkspecs/qws/linux-arm-g++/qmake.conf文件,将arm-linux-开头的命令改成以arm-linux-gnu- 开头,如下的qmake.conf文件,红色部分为修改的地方:

#

# qmake configuration for building with arm-linux-g++

#

include(../../common/g++.conf)

include(../../common/linux.conf)

include(../../common/qws.conf)

# modifications to g++.conf

QMAKE_CC                = arm-linux-gnu-gcc

QMAKE_CXX               = arm-linux-gnu-g++

QMAKE_LINK              = arm-linux-gnu-g++

QMAKE_LINK_SHLIB        = arm-linux-gnu-g++

# modifications to linux.conf

QMAKE_AR                = arm-linux-gnu-ar cqs

QMAKE_OBJCOPY           = arm-linux-gnu-objcopy

QMAKE_STRIP             = arm-linux-gnu-strip

 

配置完成之后,就可以编译安装了:

     make

     make install

     编译的时间比较长, 编译安装后,qt4安装在/usr/qt-4.5.3目录下。  

(2)QT4应用程序交叉编译

     交叉编译自己开发的 QT4应用程序需要配置如下环境变量:

      export QTDIR=/usr/qt-4.5.3

      export QMAKESPEC=qws/linux-arm-g++

      export PATH=$QTDIR/bin:$PATH

      export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

 

         例如:在PC上开发了一个qt程序,并且编译运行通过,现在需要交叉编译这个程序;步骤是先设置上面的环境变量;

         然后使用qmake重新生成Makefile文件;

         然后make 就可以了;

 

五、部署QT4到嵌入式根文件系统

         部署QT4到根文件系统大概分成两步:

              (1)拷贝QT库和QT应用程序到根文件系统中;

              (2)配置QT应用程序运行时所需要的环境;

1、拷贝QT库和QT应用程序

         自己编写的QT应用程序的运行依赖于QT库。因此,移植QT应用程序到根文件系统时,要将QT库移植到根文件系统中;s

         如,根文件系统的构建目录是/opt/filesystem,qt-embedded的按装目录是/usr/qt-4.5.3。使用下面的命令将拷贝QT库

         mkdir /opt/filesystem/qt-4.5.3

         mkdir /opt/filesystem/qt-4.5.3/lib

         cp –a /usr/qt-4.5.3/lib/*so*  /opt/filesystem/usr/qt-4.5.3/

         cp –a /usr/qt-4.5.3/lib/fonts  /opt/filesysgem/usr/qt-4.5.3/lib/

        

         拷贝QT应用程序到根文件系统中,如拷贝到/opt/filesystem/usr/bin目录下;

        

2、配置QT应用程序运行环境

在运行QT应用程序时,需要指定如下环境变量:

DISPLAY=:0.0

HOME=/tmp

QTDIR="/usr/qt-4.5.3"

LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY

QWS_MOUSE_PROTO=linuxtp:/dev/touchscreen/0

 

DISPLAY                   //指定显示设备

HOME                        //指定家目录

QTDIR                       //指定QT所在目录

LD_LIBRARY_PATH //指定QT库路径

QWS_MOUSE_PROTO        //指定使用的触摸屏驱动的设备文件

 

运行QT程序:

       在ARM平台上运行QT程序时,如果是第一次运行QT应用程序,则需要加-qws选项,指定这个程序是server程序,之后启动的都可以不使用-qws选项。

       如:

       cd  /tmp

       hello  –qws  &

 

       部署QT4需要了解嵌入式根文件系统的基本部署过程,在搭建的根文件系统的基本结构后,再进行QT4的部署。

        

阅读(1597) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~