圖解如何將Ubuntu上的Qt程式交叉編譯出可在ARM平臺執行的程式(五部曲)
圖解如何將Ubuntu上的Qt程式交叉編譯出可在ARM平臺執行的程式(五部曲)
(原創作品,轉載時請註明出處,商業用途前應徵得作者同意)
作者: devinoy(百度使用者)
日期:2012-10-16
版本:V1.00
Ubuntu(以ubuntu12.04為例,下同)下Qt Creator的安裝
1.1 點選Ubuntu桌面左邊的Ubuntu Software Center(烏邦圖軟體中心)圖示。
點選彈出介面上方的All Software。
1.3 點選彈出介面左邊的Developer Tools。
點選彈出介面中的Qt Creater,並螢幕指引安裝Qt Creator(以Qt Creator 2.4.1 Based on Qt 4.8.0(32 bit)
在Qt Creator中新增ARM平臺編譯環境設定
啟動Qt Creator,點選在主介面選單欄中的Options。
點選彈出介面中的Build&Run。
點選彈出介面中先後點選Qt Versions、Add。
2.4 在彈出的Select a qmake executable介面進入Qt4.7(以qt-4.7.1為例,下同)的bin目錄並選中其中的qmake,然後點選右下方的Open退出。
No qmlviewer installed問題的解決
新增ARM平臺編譯環境的設定後可能出現“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
注意: qmlviewer的預設安裝目錄為/usr/bin
安裝qmlviewer後重新新增
構建所有專案(Build All)
點選Build & Run介面右下方的Details按鈕展開下一介面,在該介面中點選Build All構建所有專案,構建完後,先後點選下方的Apply、OK按鈕儲存設定。
新增編譯工具鏈
在上述的Build & Run介面中先後點選Qt Versions、Add、GCC。
新增ARM交叉編譯器、偵錯程式路徑(注意:前提是現在相關路徑安裝了ARM交叉編譯器,下圖僅為舉例)
最後點選介面下方的Apply、OK按鈕儲存設定。
在Qt Creator 中交叉編譯出在ARM平臺上的可執行程式
3.1 構建設定(Build Settings)
在Qt Creator中新建或開啟一個專案檔案,點選介面左邊的Project,在彈出的構建設定(Build Setting)介面中展開編輯構建配置(Edit build configuration),並選擇ARM交叉編譯器。
3.2 執行設定(Run Settings)
在Qt Creator中新建或開啟一個專案檔案,點選介面左邊的Project,在彈出的介面中點選執行設定(Run Settings)。
3.3 構建專案,即交叉編譯出在ARM平臺上的可執行程式
點選選單欄Build à Clean All à Build All。
構建後在專案所在目錄生成一個相應的release資料夾(如:XXX-build-desktop-Qt_4_7_1_qt-4_7_1_Release資料夾),而構建生成的可執行檔案就在其中。 將該可執行檔案通過Telnet、Ftp、Linux終端、SD卡、或U盤等方法傳到開發板的/usr/sbin目錄中,如果使用nfs系統,只需將該可執行檔案複製相關目錄即可。
在開發板上部署Qt4.7
所謂部署就是提取執行目標Qt4.7應用程式時必要Qt4.7庫檔案(如/opt/qt-4.7.1中的imports, lib, plugins, qtc-qmldbg, qtc-qmlobserver, translations等5個檔案)存放在開發板的相關目錄下(如/opt/qt-4.7.1目錄)。
設定開發板中Qt4.7所需的環境變數
先編寫一個環境變數設定指令碼(該指令碼相關內容的編寫可參照開發板供應商提供的配套資料中的相關內容),再將該指令碼設定為可執行許可權,最後執行該指令碼。在開發板linux終端輸入執行該指令碼檔案的命令時,命令格式如下:
# . 指令碼檔名
注意:命令列中的“.”和後面的檔名有一空格。
在開發板執行交叉編譯出來的可執行檔案
在開發板的linux終端輸入相關命令:
# 可執行檔名 –qws
----------------- THE END ----------------