ARM Linux平台qt-2.3.10+qtopia-free-2.1.1+tslib移植

目录结构
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
接下来就慢慢等吧,不过可能选择听首歌!~

以上只是大概叙述出了整个流程,避免不了出现错误,先凑合着看吧,日后以时间再作细心整理~!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值