交叉編譯Qt/E和Qtopia過程
系統是完全安裝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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ubuntu16交叉編譯Qt5.9Ubuntu編譯QT
- 交叉編譯和 RPC編譯RPC
- 09_QT系統移植之交叉編譯QT原始碼和觸控原始碼QT編譯原始碼
- 交叉編譯編譯
- 全棧交叉編譯X86完成過程經驗分享全棧編譯
- 編譯器的自展和自舉、交叉編譯編譯
- 編譯過程編譯
- GCC編譯和連結過程GC編譯
- VS2012 編譯Qt 4.8.4完整過程編譯QT
- lazarus交叉編譯編譯
- GDB交叉編譯編譯
- golang交叉編譯Golang編譯
- 交叉編譯和交叉除錯環境搭建及使用編譯除錯
- Javac編譯過程Java編譯
- 編譯核心過程編譯
- 編譯器的工作過程和原理編譯
- 編譯器的編譯基本過程編譯
- 交叉編譯入門編譯
- go 交叉編譯,部署Go編譯
- 淺談交叉編譯編譯
- ubuntu下編譯交叉編譯工具鏈Ubuntu編譯
- 靜態編譯Qt5.4.1和Qt WebKit編譯QTWebKit
- iOS編譯過程的原理和應用iOS編譯
- 編譯連結過程編譯
- 編譯過程簡介編譯
- C++ 編譯過程C++編譯
- wifidog交叉編譯WiFi編譯
- android NDK 交叉編譯Android編譯
- golang初學:交叉編譯Golang編譯
- Qt5交叉編譯Project Error: Unknown module(s) in QT: script-private解決辦法QT編譯ProjectError
- 從零開始移植QT4.8.5之三--linux下交叉編譯QT執行庫QTLinux編譯
- 11_QT跨平臺執行之把QT程式交叉編譯到ARM開發板QT編譯
- Rust 交叉編譯與條件編譯總結Rust編譯
- 交叉編譯-Mac環境使用NDK編譯FFmpeg編譯Mac
- 實現交叉編譯gdb和gdbserver(gdb-7.6)編譯Server
- ios底層 編譯過程iOS編譯
- 編譯器的工作過程編譯
- EVC編譯TCPMP的過程編譯TCP