交叉編譯Qt/E和Qtopia過程

洛欣發表於2010-05-13

系統是完全安裝RedHat9.0,板子是hybus的X-Hyper250B的,Toolchain用的是開發板帶的hybus-arm-linux-R1.1(庫的版本是2.95.3)

交叉編譯所用到的檔案:(所有檔案都放在/usr/local/下面)

qt-××ded-2.3.10-free.tar.gz

qt-x11-2.3.2.tar.gz

qtopia-free-source-2.1.1.tar.gz

tmake-1.13.tar.gz

e2fsprogs-1.35.tar.gz

l主機x86的編譯步驟:

tar xfz qt-××ded-2.3.10-free.tar.gz(解壓後qt-2.3.10改名為qt-2.3.10-host)

export QTEDIR=$PWD/qt-2.3.10-host

tar xfz qt-x11-2.3.2.tar.gz(解壓後為qt-2.3.2)

export QT2DIR=$PWD/qt-2.3.2

tar xfz qtopia-free-source-2.1.1.tar.gz(解壓後qtopia-free-2.1.1改名為qtopia-2.1.1-host)

export QPEDIR=$PWD/qtopia-2.1.1-host

tar xfz tmake-1.13.tar.gz(解壓後tmake-1.13)

export TMAKEDIR=$PWD/tmake-1.13

export TMAKEPATH=$PWD/tmake-1.13/lib/qws/linux-x86-g++

export PATH=$TMAKEDIR/bin:$PATH

cd qt-2.3.2

export QTDIR=$QT2DIR

export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

./configure -no-xft

make

make -C tools/qvfb

cd ..

cd qt-2.3.10-host

export QTDIR=$PWD

export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

mkdir bin (因為解壓後的qt-2.3.10沒有bin資料夾)

cp $QT2DIR/bin/uic bin

cp $QT2DIR/tools/qvfb/qvfb bin

cp $QPEDIR/src/qt/qconfig-qpe.h src/tools/

./configure -qconfig qpe -qvfb -thread -system-jpeg -gif -depths 4,8,16,32

make

cd ..

tar xzf e2fsprogs-1.35.tar.gz

cd e2fsprogs-1.35

./configure -enable-elf-shlibs

make install lib/uuid/

注:這是編譯x86的libuuid庫

cd ..

cd qtopia-2.1.1-host

export PATH=$QPEDIR/bin:$PATH

export LD_LIBRARY_PATH=$QPEDIR/lib:$LD_LIBRARY_PATH

./configure

make

編譯例子:(注意:環境變數要按照上面export設定)

$qmake -project ==>>我都是這樣建立.pro檔案的

$tmake -o Makefile hello.pro

$make

$qvfb &

$./hello -qws 或者$qpe

還沒怎麼仔細研究過qpe。

l 目標機arm的編譯步驟:

tar xfz qt-××ded-2.3.10-free.tar.gz(解壓後qt-2.3.10改名為qt-2.3.10-target)

export QTEDIR=$PWD/qt-2.3.10-target

tar xfz qt-x11-2.3.2.tar.gz

export QT2DIR=$PWD/qt-2.3.2

tar xfz qtopia-free-source-2.1.1.tar.gz(解壓後qtopia-free-2.1.1改名為qtopia-2.1.1-target)

export QPEDIR=$PWD/qtopia-2.1.1-target

tar xfz tmake-1.13.tar.gz

export TMAKEDIR=$PWD/tmake-1.13

export TMAKEPATH=$PWD/tmake-1.13/lib/qws/linux-arm-g++

export PATH=$TMAKEDIR/bin:$PATH

cd qt-2.3.2

export QTDIR=$QT2DIR

export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

./configure -no-xft

make

make -C tools/qvfb

cd ..

cd qt-2.3.10-target

export QTDIR=$PWD

export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

mkdir bin

cp $QT2DIR/bin/uic bin

cp $QT2DIR/tools/qvfb/qvfb bin

cp $QPEDIR/src/qt/qconfig-qpe.h src/tools/

./configure -xplatform. linux-arm-g++ -qconfig qpe -qvfb -thread -system-jpeg -gif -depths 4,8,16,32

make

cd ..

注:這裡交叉編譯arm版本的Qt/E,需要arm版本的libjpeg.so.62,hybus-arm-linux-R1.1裡面包含這個庫;如沒有可以上網下載。

tar xzf e2fsprogs-1.35.tar.gz

cd e2fsprogs-1.35

./configure -host=arm-linux -with-cc=arm-linux-gcc -with-linker=arm-linux-ld -enable-elf-shlibs -prefix=/usr/local/hybus-arm-linux-R1.1/arm-linux

make install lib/uuid/ ===>>>這步安裝到hybus-arm-linux-R1.1/lib上的libuuid.so.1.2版本不對,要執行cp lib/libuuid.so.1.2 ../hybus-arm-linux-R1.1/lib

注:這步是交叉編譯libuuid庫,配置詳情見./configure --help

(多謝http:/panjet.wleda.com/?p=20裡面的大哥呀)

cd ..

cd qtopia-2.1.1-host

export PATH=$QPEDIR/bin:$PATH

export LD_LIBRARY_PATH=$QPEDIR/lib:$LD_LIBRARY_PATH

cp src/libraries/qtopia/custom-linux-ipaq-g++.cpp src/libraries/qtopia/custom-linux-arm-g++.cpp

cp src/libraries/qtopia/custom-linux-ipaq-g++.h src/libraries/qtopia/custom-linux-arm-g++.h

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

make

注:這裡需要libstdc++.so和libgcc_s.so庫,hybus-arm-linux-R1.1/lib沒有,所以要從網上下載;版本一定要是2.95.3。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22785983/viewspace-662609/,如需轉載,請註明出處,否則將追究法律責任。

相關文章