目录结构
e2fsprogs: /root/arm-qt/e2fsprogs
jpeg-6b: /root/arm-qt/jpeg-6b
qt-2.3.10: /root/arm-qt/qt-2.3.10
qt-2.3.2: /root/arm-qt/qt-2.3.2 //PC版本QT, 未用到
qtopia-free-2.1.1: /root/arm-qt/qtopia-free-2.1.1
qt-x11-free-3.3.8: /root/arm-qt/qt-x11-free-3.3.8 //PC版本QTOPIA, 未用到
tmake-1.13:/root/arm-qt/tmake-1.13
tslib: /root/arm-qt/tslib
1。qt-2.3.10移植
qt-2.3.10已经提供对tslib的支持,只不过其使用的QWS_MOUSE_PROTO不是tslib,而是TPanel,这一点与QTE4.5不同
。tslib的编译过程与不再重复,查看“ARM Linux平台QTE+tslib移植后感 ”一文即可,有一点不同的是,QTOPIA编
译时用到的tslib需要为hardware FP类型,此处需要注意,这里呈现一下tslib的编译过程:
----------------------------------------------------------------------------------------
说明:
(1)
如果用MagusCore的编译器生成tslib时,在编译QTOPIA阶段,链接时会报以下错误:
libts.so use software FP, wherea libqpe.so use hardware FP.
解决方法:用AIGO的编译器生成tslib后,再重新编译QTOPIA。
----------------------------------------------------------------------------------------
(1):
MagusCore:
export CC=/opt/magus/arm/3.4.6/bin/arm-linux-gcc
AIGO:
export CC=/opt/mtwk/usr/local/gcc-3.4.3-glibc-2.3.4/arm-linux/bin/arm-linux-gcc
(2):echo "ac_cv_func_malloc_0_nonnull=yes">arm-linux.cache
如果没有此句,make时会报rpl_malloc无法找到的错误。原因:configure中有#define malloc rpl_malloc。
此时只要将ac_cv_func_malloc_0_nonnull=yes写到.cache文件中,让configure从文件读取此配置即可绕开#define
malloc rpl_malloc
(3):
MagusCore:
./configure --prefix=$PWD/release --host=arm-linux --target arm-linux --cache-file=arm-linux.cache
CFLAGS=' -L/opt/mtwk/usr/local/gcc-3.4.3-glibc-2.3.4/arm-linux/lib '
AIGO:
./configure --prefix=$PWD/release --host=arm-linux --target arm-linux --cache-file=arm-linux.cache
CFLAGS=' -L/opt/mtwk/usr/local/gcc-3.4.3-glibc-2.3.4/arm-linux/amr-linux/lib '
(4):
make clean
make
make install
注:
运行加载input.so模块时,会抛出Segement fault的错误。这是因为tslib中ts_attach.c中__ts_attach_raw()函数
中使用了NULL指针。
现已修改,具体见ts_config.c。
Over.
下面重点分析qt-2.3.10的编译过程:
(1)
[~#]cd /root/arm-qt/qt-2.3.10
编译写mkqte.sh脚本,脚本内容如下:
#!/bin/bash
export QT2DIR=/root/arm-qt/qt-2.3.2
export TMAKEDIR=/root/arm-qt/tmake-1.13
export DQTDIR=/root/arm-qt/qt-x11-free-3.3.8
export QTEDIR=/root/arm-qt/qt-2.3.10
export QPEDIR=/root/arm-qt/qtopia-free-2.1.1
cd $DQTDIR
export QTDIR=$DQTDIR
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
cd $QT2DIR
export TMAKEPATH=$TMAKEDIR/lib/linux-g++
export QTDIR=$QT2DIR
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export TMAKEPATH=$TMAKEDIR/lib/linux-g++
export QTDIR=$QT2DIR
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
cd $QTEDIR/tools/qvfb
cd $QTEDIR
export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++
export QTDIR=$QTEDIR
#export PATH=/opt/mtwk/usr/local/gcc-3.4.3-glibc-2.3.4/arm-linux/bin:$QTDIR/bin:$PATH
#export LD_LIBRARY_PATH=$QTDIR/lib:$QTDIR/../tslib/src/release/lib:$LD_LIBRARY_PATH
export PATH=/opt/magus/arm/3.4.6/bin:$QTDIR/bin:$PATH
export
LD_LIBRARY_PATH=/lib:/usr/lib:$QTDIR/lib:$QTDIR/../tslib/src/release/lib:/opt/magus/arm/3.4.6/arm-
linux/lib:$LD_LIBRARY_PATH
cp $QPEDIR/src/qt/qconfig-qpe.h src/tools/ -f
./configure -xplatform linux-arm-g++ -system-jpeg -thread -tslib -no-xft -qconfig qpe -keypad-mode -
no-qvfb -depths 4,8,16,32 -L. -lm -ljpeg -lts -I$PWD/../tslib/src/release/include -
I/opt/magus/arm/3.4.6/arm-linux/include
(2)
[~#]./mkqte.sh
(3)编译过程出现的错误error:
[1]PAGE_SIZE PAGE_MASK找不到
在交叉编译器的inlcude目录下有asm/page.h文件,将其中的PAGE_SIZE PAGE_MASK相关的代码COPY至
src/kernel/qpixmapcache.cpp文件中即可。
[2]
2。qtopia-free-2.1.1移植
编译QTOPIA时会用到libqte.so、libts.so、libjpeg.so等等库,务必先完成对这些依赖库的编译。
[~#]cd /root/arm-qt/qtopia-free-2.1.1
编译写mkqpe.sh脚本,脚本内容如下:
#--------------------------------
#!/bin/bash
export QT2DIR=/root/arm-qt/qt-2.3.2
export TMAKEDIR=/root/arm-qt/tmake-1.13
export DQTDIR=/root/arm-qt/qt-x11-free-3.3.8
export QTEDIR=/root/arm-qt/qt-2.3.10
export QPEDIR=/root/arm-qt/qtopia-free-2.1.1
cd $DQTDIR
export QTDIR=$DQTDIR
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
cd $QT2DIR
export TMAKEPATH=$TMAKEDIR/lib/linux-g++
export QTDIR=$QT2DIR
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export TMAKEPATH=$TMAKEDIR/lib/linux-g++
export QTDIR=$QT2DIR
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
cd $QTEDIR/tools/qvfb
cd $QTEDIR
export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++
export QTDIR=$QTEDIR
#We must use arm complier of AIGO. to build Qtopia. Otherwise the phase of link will give the
follow error:
#
export PATH=/opt/mtwk/usr/local/gcc-3.4.3-glibc-2.3.4/arm-linux/bin:$QTDIR/bin:$PATH
#export PATH=/opt/magus/arm/3.4.6/bin:$QTDIR/bin:$PATH
export
LD_LIBRARY_PATH=/lib:/usr/lib:$QTDIR/lib:$QTDIR/../tslib/src/release/lib:/opt/magus/arm/3.4.6/arm-
linux/lib:$PWD/../qt-2.3.10/lib:$LD_LIBRARY_PATH
cp $QPEDIR/src/qt/qconfig-qpe.h src/tools/
cd $QPEDIR
export QTDIR=$QTEDIR
export PATH=$QPEDIR/bin:$PATH
#OsK CONFIGURE
#./configure -xplatform linux-arm-g++ -edition pda -no-qtopiadesktop –displaysize 320x240 -ljpeg
-luuid
./configure -prefix $PWD/image/opt/Qtopia -xplatform linux-arm-g++ -edition pda -no-qtopiadesktop –
displaysize 320x240 -ljpeg -luuid -I$PWD/../tslib/src/release/include -lts
#make clean
make
make install
#--------------------------------
(2)
[~#]./mkqpe.sh
接下来就慢慢等吧,不过可能选择听首歌!~
以上只是大概叙述出了整个流程,避免不了出现错误,先凑合着看吧,日后以时间再作细心整理~!