首页 理论教育ARM嵌入式系统编译、发布与运行

ARM嵌入式系统编译、发布与运行

【摘要】:解压缩所有软件包把Qtopia用到的软件包存放到qtopia-arm目录下,然后执行下面的解压缩过程:tar-zxvf tmake-1.11.tar.gztar-zxvf qt-embedded-2.3.7.tar.gztar-zxvf qtopia-free-1.7.0.tar.gztar-zxvf qt-xl1-2.3.2.tar.gztar-zxvf konqueror-embedded-snapshot-20030705.tar.gz修改软件包目录名称mv konqueror-embedded-snapshot-20030705 konqmv tmake-1.11 tmakemv qt-2.3.7/qtmv qtopia-free-1.7.0 qtopiamv qt-2.3.2 qt-x11软件包目录修改完毕后,可以开始编译过程。编译结束后,把应用程序复制到bin目录下,由于uic和designer在编译结束后会自动复制到bin目录,因此最后一行仅复制qvfb到bin目录。4个Qt工具准备好之后,首先使用strip工具去掉工具中的调试信息:strip bin/uic bin/moc bin/designer bin/qvfb然后复制4个工具到Qt目录,为后面编译Qt的工作做好准备。

Qt有一个专门为嵌入式系统使用的版本Qtopia。Qtopia是一组软件包的集合,使用Qtop ia可以方便地在嵌入式Linux系统上建立和使用图形界面。Qtopia本身提供了管理界面的一些工具,用户程序也可以无需Qtopia的管理界面而直接运行。用户在主机编写的Qt应用程序中只需要经过交叉编译就可以运行在嵌入式开发板上。

1.需要的资源

在编译Qtopia之前,需要从Qt的官方网站上下载下面的软件包:

请读者在下载的时候注意软件包的版本号,Qt软件包之间的版本有比较强的依赖关系,如果版本号相差太大容易导致编译不通过。

2.准备工作

在开始编译Qtopia之前首先搭建编译软件包的环境,下面的步骤使用相对路径,可以在任意目录下进行。

(1)解压缩所有软件包

把Qtopia用到的软件包存放到qtopia-arm目录下,然后执行下面的解压缩过程:

tar-zxvf tmake-1.11.tar.gz

tar-zxvf qt-embedded-2.3.7.tar.gz

tar-zxvf qtopia-free-1.7.0.tar.gz

tar-zxvf qt-xl1-2.3.2.tar.gz

tar-zxvf konqueror-embedded-snapshot-20030705.tar.gz

(2)修改软件包目录名称

mv konqueror-embedded-snapshot-20030705 konq

mv tmake-1.11 tmake

mv qt-2.3.7/qt

mv qtopia-free-1.7.0 qtopia

mv qt-2.3.2 qt-x11

软件包目录修改完毕后,可以开始编译过程。

3.编译主机Qt工具

Qtopia交叉编译需要用到一些主机的库和应用程序,首先需要在主机编译qt-x11库和qtopia库。

(1)编译qt-x11库

Qt库需要用到qt-x11库提供的基本应用程序,包括uic、moc、designer和qvfb。uic可以把Qt的界面描述文件转换为相应的.h文件和.cpp文件;m oc用于把Qt的信号和槽的定义翻译为标准的C++语法;designer是Qt界面的设计工具;qvfb是Qt视频缓冲管理工具;这4个工具都是主机工具,用于在主机上开发目标平台的Qt应用。

a)配置qt-x11库工作环境。首先进入qt-x11目录,然后按照下面的步骤设置qt-x11的工作环境:

cd qt-x11//进入qt-x11代码目录

export QTDIR=$PWD//设置QT DIR环境变量

echo yes|./configure-static-no-xf t-no-opengl-no-sm

//配置生成Makefile

QTDIR是编译Qt过程中必须有的一个变量,Qt库的工程文件以QTDIR环境变量作为代码根目录,这里设置QTDIR为qt-x11代码所在的目录。最后一句配置语句中echo yes的作用是向终端输入一个yes字符串。在配置qt-x-11的时候会提示是否同意Qt的版权协议,yes表示同意。

b)编译基本工具。设置好工作环境后,首先编译moc工具:

make-C src/moc

cp src/moc/moc bin

第一行的意思是指定make工具使用src/moc目录下的Makefile文件,moc目录保存了moc工具用到的代码和头文件,编译结束后会在src/moc目录下生成一个可执行程序moc。第二行复制moc工具到当前目录下的bin目录。

接下来编译uic、designer和qvfb工具:

make-C src

make-C tools/designer

make-C tools/qvfb

cp tools/qvfb/qvfb bin

与编译moc工具类似,指定对工具所在目录进行编译。编译结束后,把应用程序复制到bin目录下,由于uic和designer在编译结束后会自动复制到bin目录,因此最后一行仅复制qvfb到bin目录。

4个Qt工具准备好之后,首先使用strip工具去掉工具中的调试信息:

strip bin/uic bin/moc bin/designer bin/qvfb

然后复制4个工具到Qt目录,为后面编译Qt的工作做好准备。

cd..

cp qt-x11/bi n/?*qt/bin

rm-fr qt-x11(www.chuimin.cn)

复制基本工具完成后,由于以后不再使用qt-x11库,可以把qt-x11目录删除。

(2)编译Qt库

在编译Qt库之前需要设置编译用到的环境变量:

export QTDIR=$PWD/qt

export QPEDIR=$PWD/qtopia

export TMAKEDIR=$PWD/tmake

export TMAKEPATH=$TMAKEDIR/lib/qw s/linux-arm-g++

export PATH=$QTDIR/bin:$QPEDIR/bin:$TMAKEDIR/bin:$PATH

这里改变QTDIR环境变量为Qt目录。此外还设置了QPEDIR、TMAKEDIR、TMAKEPATH变量,然后把新设置的变量加入到系统PATH变量里。QPEDIR变量是交叉编译Qtopia用到的必要变量。

设置好环境变量后,可以开始Qt库的编译过程:

cd qt

make clean

cp../qtopia/src/qt/qconfig-qpe.h src/tools/

(echo yes;echo no)|./configure-system-jpeg-gif-system-libpng-system-zlib-p latform

linux-arm-g++-qconfig qpe-depths 16,24,32

Make-C src

与编译qt-x11库类似,仅编译qt/src目录下的文件,如果不指定仅编译src目录会出现编译错误。第3行复制qtopia/src/qt下的qconfig-qpe.h文件到Qt的tools目录,作用是为了生成供qtopia使用的工具库。

4.交叉编译qtopia

在编译好Qt主机开发工具后,开始交叉编译qtopia。qtopia的编译过程比较简单,如下:

cdqtopia/src

./configure-platform linux-arm-g++

make

cd-

首先进入qtopia/src目录,然后配置Makefile,指定目标平台是ARM。“1inux-arm-g++”是qtopia自定义的目标平台名称,可以通过“./configure--help”命令查看目标平台参数。配置好Makefile之后,使用make编译qtopia。

编译好qtopia之后,可以编译一个konqueror浏览器,供以后集成在QT应用程序中。编译konqueror之前重新设置一下环境变量:

export AR=arm-linux-ar

export STRIP=arm-linux-strip

export RANLIB=arm-linux-ranlib

export CXX=arm-linux-g++

export CCC=arm-linux-c++

export CC=arm-linux-gcc

export CROSS_COMPILE=1

export PATH=$PATH:/usr/loca/arm/3.3.2/bin

export INSTALL=/usr/local/arm/3.3.2

其中需要注意的是,CROSS_COMPILE环境变量值为1表示需要交叉编译。INSTALL环境变量是交叉编译器存放的目录。设置好环境变量后,开始编译过程:

cd konq

./configure--host=arm-linux--target=arm-linux--enable-embedded

--enable-qt-embedded--enable-qpe--w ith-gui=qpe-disable-debug

--enable-ftp--enable-static--disable-shared--disable-mt

--w ith-extra-libs=/us r/local/arm/3.3.2/lib:$QPEDIR/lib

--w ith-extra-include=/usr/local/arm/3.3.2/include:$PQEDIR/include

--w ithout-ssl--w ith-qt-dir=$QTDIR--w ith-qt-includes=$QTDIR/include

--w ith-qt-libraries=$QTDIR/lib--w ith-qtopia-dir=$QPEDIR

make

首先进入konq目录,然后配置konqueror。konqueror的配置参数比较多,主要包括设置主机平台类型、目标平台类型、指定静态编译、qtopia库的路径,以及其他一些特性。设置完成后,使用make工具编译konqueror。如果没有出错的话,会在一段时间后编译生成konqueror。