【摘要】:解压缩所有软件包把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。
相关推荐