ARM-GCC與QTE的交叉編譯

(本文作個人備忘之用,轉載請註明出處)

一、安裝 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

註銷,重新登錄
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章