1. 程式人生 > >Qt arm嵌入式交叉編譯環境搭建

Qt arm嵌入式交叉編譯環境搭建

剛接觸linux系統和Qt,這個編譯環境的搭建確實讓人很是煩惱。經過一個多月時間的接觸,基本搞定了,雖然有些東西還是不是太明白,這在做個總結。

Qt的理解
首先得明白,qt就是一個C++類庫。用的時候,我們是通過呼叫它的動態庫來使用的。這就涉及一個問題了,在不同的系統上比如windows、linux、arm-linux上編譯器不一樣,所以我們就需要用對應的編譯器編譯Qt的原始碼,來獲取對應編譯器的版本。windows版本已經編譯好了,所以我們就直接用了。
QtCreator不是一個編譯器,而只是一個視覺化開發環境,它通過qmake將相應的配置資訊生成一個makefile檔案。然後,通過makefile檔案來呼叫相應的編譯器來編譯生成程式。

安裝arm-linux編譯器
這裡我就不說了,因為有其他的人安裝好了,我就沒有再安裝,等對這部分內容熟悉了,再去安裝。我使用的是Ubuntu14.04系統感覺還是不錯的,從同事那拷貝編譯好的的檔案CodeSourcery.tar.bz2解壓在/usr/locall目錄下,也可以放在其他目錄下。這裡提一下linux系統一切皆檔案,所以編譯好的東西,直接拷貝過來就能用了,不像windows上還有登錄檔什麼的。

編譯arm-linux版qt
這裡也有同事編譯好了,我也暫時沒有去編譯了。從同事那拷貝編譯好的Trolltech.tar.bz2檔案,解壓到/usr/local目錄下。

安裝QtCreator


安裝這個的方法似乎有很多,我選擇了最簡單的方法。直接在ubuntu軟體中心下載。

相關配置
以上就把所有需要的東西準備齊了,下一步就是配置,通過對QtCreator的配置,增加一個制定Qt版本和編譯器。
首先,我們增加一個環境變數,將arm編譯器的路徑新增進去。在終端輸入:gedit /etc/profile 在最後新增下面兩句:
export CROSS_COMPILE=arm-xilinx-linux-gnueabi-
export PATH=PATH:/usr/local/CodeSourcery/SourceryCodeBenchLiteforXilinxGNULinux/bin

CROSSCOMPILEQtqmake/usr/local/Trolltech/QtEmbedded4.8.4arm/mkspecs/qws/linuxarmg++/qmake.confQtCreatormakefile{CROSS_COMPILE}g++等,這個就是指定編譯器的名稱,編譯器的路徑就是第二句匯入的路徑;第二句的意思是為預設shell路徑增加一個路徑,這樣的話,當我們或者程式在shell視窗中輸入arm-xilinx-linux-gnueabi-g++ -v就能夠檢視當前交叉編譯器的版本了。同時QtCreator也可以查詢到交叉編譯器的路徑了。

好了,下面我們開始配置QtCreator。
增加一個編譯器:點選tools-options-build and run-compilers,手動新增一個編譯器,名字自己曲就叫做:arm-linux-g++;路徑就是上面提到的那個PATH下面的arm-xilinx-linux-gnueabi-g++。
增加一個Qt版本:開啟/usr/local/Trolltech/QtEmbedded-4.8.4-arm/bin/qmake。這裡可能會出現“No qmlviewer installed”告警資訊“這是因為沒有安裝qmlviewer或qmlviewer安裝後的可執行檔案沒有處於qt-4.7.1/bin目錄下,針對後一種情況只需從qmlviewer的安裝目錄(一般在/usr/bin目錄下)裡將qmlviewer, qmlpuppet, qmlprofiler, 和qmlplugindump複製到qt-4.7.1/bin目錄下。而針對未安裝qmlviewer的情況,安裝方法如下:在ubuntu12.04中開啟linux終端,輸入以下命令:apt-get install qt4-qmlviewer即可。

最後,在kits中新增一個arm-linux的編譯套件。選擇剛才的qt版本和編譯器,最後指定一下mkspecs的路徑/usr/local/Trolltech/QtEmbedded-4.8.4-arm/mkspecs/qws/linux-arm-g++就可以了。

以上就是環境的搭建了,至於怎麼編譯,就暫時留在以後再去研究吧。