(本文作個人備忘之用,轉載請註明出處)
一、安裝 arm-linux-gcc 3.4.1
下載 arm-linux-gcc-3.4.1.tar.bz2
解壓縮 sudo tar -xjvf arm-linux-gcc-3.4.1.tar.bz2 -C /
修改 /root/.bashrc 末尾加入:export PATH=/usr/local/arm/3.4.1/bin:$PATH
修改 ~/.bashrc 末尾加入:export PATH=/usr/local/arm/3.4.1/bin:$PATH
(注:環境變量的修改也可在 /etc/bash.bashrc 中一次性完成)
註銷,重新登錄
二、安裝 qt-embedded 4.5(交叉編譯需在超級管理員下執行)
解壓縮 qt-embedded-linux-opensource-src-4.5.0.tar.gz 至任意目錄
修改(觸摸屏問題):qt-embedded-linux-opensource-src-4.5.0/src/gui/embedded/qmouselinuxtp_qws.h 開頭加入
#define QT_QWS_IPAQ
#define QT_QWS_IPAQ_RAW
出錯原因:在另一個源文件 qmouselinuxtp_qws.cpp 裏應把 /dev/h3600_ts 替換爲自己板子的設備文件,實驗室的板子的設備爲 /dev/h3600_tsraw,如果只定義了 QT_QWS_IPAQ 則使用的是 /dev/h3600_ts,如果兩個都定義了則使用的是 /dev/h3600_tsraw
修改:qt-embedded-linux-opensource-src-4.5.0/src/corelib/global/qlibraryinfo.cpp
開頭加入 #include <stdio.h>
#define sysexit(c) __builtin_exit(c) 修改爲 #define sysexit(c) exit(c)
出錯原因:Maybe the configure script should try to compile an example with __builtin_exit(x) to determine if it's available or not, and if it's not available a proper macro should be defined so that the simple exit() function is used instead.
譯文:configure 腳本可能會嘗試運行一個含有退出函數 __builtin_exit(x) 的例子,以確定(此Qt版本)是否可用,如果不可用,那麼應該定義一個恰當的宏,因此,我們用簡單的 exit() 函數代替了它。
運行:./configure -qt-sql-sqlite -xplatform qws/linux-arm-g++ -webkit -qt-mouse-linuxtp -embedded arm
運行:make(此編譯過程將持續 3~4 小時)
運行:make install
修改 /root/.bashrc 末尾加入:export PATH=/usr/local/Trolltech/QtEmbedded-4.5.0-arm/bin:$PATH
修改 ~/.bashrc 末尾加入:export PATH=/usr/local/Trolltech/QtEmbedded-4.5.0-arm/bin:$PATH
註銷,重新登錄
三、安裝 qt-embedded 4.6(交叉編譯需在超級管理員下執行)
解壓縮 qt-everywhere-opensource-src-4.6.2.tar.gz 至任意目錄
修改(觸摸屏問題):qt-everywhere-opensource-src-4.6.2/src/gui/embedded/qmouselinuxtp_qws.h 開頭加入
#define QT_QWS_IPAQ
#define QT_QWS_IPAQ_RAW
修改:qt-everywhere-opensource-src-4.6.2/src/corelib/global/qlibraryinfo.cpp
開頭加入 #include <stdio.h>
修改(彙編問題):qt-everywhere-opensource-src-4.6.2/src/3rdparty/freetype/include/freetype/config/ftconfig.h
"orr %0, %2, lsl #16\n\t" /* %0 |= %2 << 16 */ 修改爲
"orr %0, %0, %2, lsl #16\n\t" /* %0 |= %2 << 16 */
出錯原因:(彙編問題,尚不明確)
運行:./configure -qt-sql-sqlite -xplatform qws/linux-arm-g++ -webkit -qt-mouse-linuxtp -embedded arm -D__ARM_ARCH_5TEJ__
添加選項 -D__ARM_ARCH_5TEJ__ 的原因:此版本(qt-everywhere)中必須明確指定目標體系結構(Target Architecture),對體系結構的定義可參照 qt-everywhere-opensource-src-4.6.2/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h
運行:make(此編譯過程將持續 3~4 小時)
運行:make install
修改 /root/.bashrc 末尾加入:export PATH=/usr/local/Trolltech/QtEmbedded-4.6.2-arm/bin:$PATH
修改 ~/.bashrc 末尾加入:export PATH=/usr/local/Trolltech/QtEmbedded-4.6.2-arm/bin:$PATH
註銷,重新登錄