分类: LINUX
2007-12-27 16:31:32
宿主机Linux操作系统为Fedro Core 5
交叉编译工具链版本:arm-linux-g++ 2.95.3,
宿主机编译工具链GCC 版本为4.1.0
QT-X11版本为2.3.2
QT/E版本为2.3.7
QTOPIA版本为1.7.0
解压qt-x11-2.3.2.tar.gz,并更改解压文件夹名为qt-x11
cd qt-x11
更改qt-x11文件夹中src/tools/qvaluestack.h第57行源代码remove( this->fromLast() );为this->remove( this->fromLast() );否则,会出现[xml/qxml.o]错误
建立set-env文件
export QTDIR=$PWD
export PATH=$QTDIR/bin:$PATH
export MANPATH=$QTDIR/doc/man:$MANPATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
echo yes | ./configure -no-xft -no-opengl -no-sm
make
在该文件夹下,执"source set-env"命令(.与set-env之间有空格)
为了编译QTOPIA,将QTOPIA文件夹下./src/qt/qconfig-qpe.h拷贝到QTE文件夹下 src/tools/
然后建立set-env文件
#!/bin/bash
#编译QTE脚本
#此处$PWD指的是QTE所在的文件夹
export QTDIR=$PWD
export QTEDIR=$QTDIR
export PATH=$QTDIR/bin:$PATH
export PATH=/usr/local/arm/2.95.3/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
echo yes | ./configure -platform linux-x86-g++ -xplatform linux-arm-g++ -qconfig qpe -depths 16,24,32
make
执行"source set-env"
注意,在此处configure时,一定要写明platform及xplatform,且platform要设为linux-x86-g++,否则当使用linux-generic-g++时,会找当前系统默认的g++,由于前面在PATH处设定新的g++路径,所以会出现错误。
如果需要移植到目标机上,则将$QTEDIR/lib/libqte.so.x.y.z拷贝至目标机上lib文件夹下,并命名为/lib/libqte.so.x(根据前面的libqte编号而定);
将$QTEDIR/lib/fonts/fontdir拷贝到目标机上qt/e的安装路径上(通过在目标机上设置$QTDIR来实现),如/usr/local/qt-embedded/lib/fonts/fontdir
由于在编译qtopia时,需要用到QTE的uic命令来解释有关的资源,所以此处,需要将前面编译的qt-x11中bin目录下的uic命令拷贝至QTEDIR/bin下。
建立set-env文件:
#!/bin/bash
#安装QTOPIA
export QPEDIR=$PWD
#此处的QTDIR是前面编译的QT/E的路径
export QTDIR=/friendly-arm/arm-qtopia/qt
export QTEDIR=$QTDIR
#本机工具链的位置,根据个人情况设置
export PATH=/usr/local/arm/2.95.3/bin:$PATH
export PATH=$QTDIR/bin:$PATH
export PATH=$QPEDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
cd ./src
echo yes | ./configure -platform linux-arm-g++
make
执行"source set-env"
如果需要移植到目标机上,将QPEDIR目录下的bin, apps, etc, plugins, services, sounds, i18n, lib, pics, help文件夹拷贝到目标机上的QPEDIR处(通过设置QPEDIR来实现)
在目标机的bin目录下,建立qtopia脚本文件(如下)
#!/bin/sh
export set HOME=/root
export set QTDIR=/opt/qt
export set QPEDIR=/opt/qtopia
export set QWS_KEYBOARD="USB:/dev/input/event1"
export set QWS_MOUSE_PROTO="USB:/dev/input/mouse0"
export set PATH=$QPEDIR/bin:$PATH
export set LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/lib
$QPEDIR/bin/qpe > /dev/null 2>/dev/null
在目标机启动后,就可以使用qtopia直接启动