Step1:
從Trolltech下載Source Code Tarball (qt-x11及qtopia) [亦有相關mirrors可選擇]
- 代碼: 選擇全部
# wget ftp://ftp.iasi.roedu.net/mirrors/ftp.trolltech.com/qt/source/qt-x11-opensource-4.0.0-b2.tar.gz
# wget ftp://ftp.iasi.roedu.net/mirrors/ftp.trolltech.com/qt/source/qtopia-core-opensource-src-4.3.0.tar.gz
PS:
這邊抓取的qt-x11是給想全部使用tarball編譯完成的參考作法,若想解省編譯時間,亦可透過apt相關工具安裝基本的qt-x11工具
(會用到的基本上有uic3,qt3to4, moc 等),用來輔助編譯qtopia
Step2:
解壓縮
- 代碼: 選擇全部
# tar zxvf qt-x11-opensource-4.0.0-b2.tar.gz
# tar zxvf qtopia-core-opensource-src-4.3.0.tar.gz
Step3:
編譯qt-x11 (參考qt-x11-opensource-4.0.0-b2/INSTALL)
(這邊編譯qt-x11的目的主要是需取得相關工具用來做後續編譯qtopia之用)
- 代碼: 選擇全部
# cd qt-x11-opensource-4.0.0-b2
# export QTDIR=$PWD
# export PATH=$QTDIR/bin:$PATH
# export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
# ./configure <一串參數>
比較常用的參數有
-release ........... Compile and link Qt with debugging turned off
-shared ............ Create and use a shared Qt library (libqt.so)
-qt-gif ............ Compile in GIF reading support
-qt-zlib ........... Use the zlib bundled with Qt
-no-cups............... Do not compile CUPS support
這邊可自行測試不同參數
# make
(等待 ... 喝杯可可亞)
Step4:
設定Cross Compiler環境變數 (是實際情況做修改)
- 代碼: 選擇全部
# export PATH=/usr/local/arm/bin:$PATH
Step5:
編譯Qtopia
- 代碼: 選擇全部
# cd qtopia-core-opensource-src-4.3.0
# export QTDIR=$PWD
# export PATH=$QTDIR/bin:$PATH
# export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
# ./configure <一串參數>
比較特別的參數有
-qt3support ........ Enables the Qt 3 support functionality
-xplatform target ... The target platform when cross-compiling.
(ex: -xplatformqws/linux-arm-g++)
-embedded <arch>..... This will enable the embedded build, you must have a proper license for this switch to work.
Example values for <arch>: arm mips x86 generic
(ex: -embedded arm)
-depths <list> ...... Comma-separated list of supported bit-per-pixel
depths, from: 4, 8, 16, 18, 24, and 32
(ex: -depths 4, 8,16)
-qt-mouse-<driver> ... Enable a mouse <driver> in the QtGui library.
Possible values for <driver>: [ pc bus linuxtp yopy vr41xx tslib qvfb ]
PS:
這邊如果想使用開發平台的USB介面連接滑鼠,可選擇pc
如果希望有touchscreen library support,可加入linuxtp或tslib
(其中tslib需在編譯qtopia前先行cross compile過,另外touchscreen需配和平台的touchscreen driver的support), 這邊可自行測試不同參數
# make
(等待 ... 喝杯可可亞)
PS: 過程中若有缺少tool,可先至先前build好的qt-x11目錄中尋找,或直接以apt安裝相關qt4 development 套件
Step5:
將編譯好的qtopia shared library (for ARM) 複製到要給系統使用的ramdisk中
(以下作法是實際情況調整)
解開ramdisk
- 代碼: 選擇全部
# gunzip ramdisk.gz
# mount -o loop ramdisk /mnt
將qtopia-core-opensource-src-4.3.0/ 下的
libQt3Support.so.4.3.0
libQtCore.so.4.3.0
libQtGui.so.4.3.0
libQtNetwork.so.4.3.0
libQtScript.so.4.3.0
libQtSql.so.4.3.0
libQtSvg.so.4.3.0
libQtXml.so.4.3.0
等實際會用到的相關Shared library cp 至 /mnt/lib
(這邊視實際root filesystem規畫做修改)
# umount /mnt
# gzip -9 ramdisk
PS:
要注意的有:
1.
平台啟動後,需設定好LD_LIBRARY_PATH至libQt*所在的目錄,讓qtopia application可找到這些library
2.
實際程式運行時抓取的library名稱可能會有修改,需配合link library的名稱
ex: ln -s libQtGui.so.4.3.0 libQtGui.so.4
3.
在開發主機上編譯應用程式前
需先check QTDIR路徑是否正確指向qtopia目錄
在hello程式目錄下執行 (以下參考自Qtopia官網相關文件)
# $QTDIR/bin/qmake -project
# $QTDIR/bin/qmake
# make
可得 cross compile好的 hello qt application
載入平台後可運行
# hello -qws
4.
若需使用 touchscreen可參考官網所寫的Qt mouse環境變數設定
之後就能快快樂樂寫 Qt 4 程式了
可配合 Qt designer開發圖形介面
PS:
小弟有透過上述的相關步驟移植mplayer及smplayer
(mplayer Qt GUI前端)至平台上,但smplayer播放影片時仍有問題需解決
小弟亦有在該平台上移植Mesa 3D library來跑opengl 相關程式如: gears
但FPS效能不佳,可能無圖形加速GPU以及沒有tune最佳化相關CFLAGS編譯參數等
若描述有不當、手誤、冗長之處,或排版有不佳之處請大家多多包涵
若有建議以及相關應用想法也請大家多多分享,thx