LINUX系統中QT(qtopia)平台開發說明
=================================
黃德智(compiler_hdz@hotmail.com)
V:1.0
日期:20060305
QT 版本 :20060106V2
一、開發包的擷取
================
最新的qtopia開發包名稱為:qtopia_dev20060106V2.tar.gz;
目前的版本為20060106V2,大小大約為 246M。
當前和後續版本也可在 東信 的FTP網站上下載得到.
二、開發環境的搭建
==================
qtopia開發包運行於LINUX作業系統上,LINUX要求核心版本為2.4.18或以上。安裝LINUX作業系統,
如果只是在PC機上進行模擬器上的開發和交叉編譯,可將LINUX安裝到虛擬機器上。將LINUX安裝到虛擬機器上,
建議硬碟空間最少分配6G,因為開發環境的搭建需要很大空間。
1、qtopia開發包的安裝步驟:
(1)、將qtopia_dev.tar.gz放到/opt/目錄下
建議放在/opt/目錄下,如果需要將開發包放到其他的目錄,則解壓後需要修改
qtopia-phone-2.1.1/src/下的config.pri檔案。
(2)、用命令tar解壓
在LINUX終端中CD到/opt/目錄下,輸入命令 tar -zxf qtopia_dev.tar.gz (斷行符號),
幾分鐘後解壓結束,出現命令提示字元,如果報找不到什麼目錄或找不到什麼檔案,輸入命令“df -m”
查看硬碟使用方式,一般原因是硬碟空間不足,解壓失敗,刪除硬碟上不需要的檔案或重新安裝LINUX操作
系統,把分配硬碟空間更大。
(3)、解壓後產生的目錄為qtopia_dev
2、交叉編譯工具的安裝步驟:
(1)、將cross2compiler.tar.gz放到/opt/目錄下
(2)、用命令tar -zxf cross2compiler.tar.gz 解壓
(3)、解壓後產生的目錄為debugdir
交叉編譯工具的安裝是為了編譯出在真機上啟動並執行可執行檔,如果只是在模擬器上開發,可不
進行交叉工具的安裝。
三、模擬器上開發
================
1、設定檔和全域變數的設定:
(1)、將.../qtopia_dev/.../x86/Settings目錄放到/root/目錄下,如果已經有/root/Settings目錄,
則進行覆蓋。
(2)、進入qtopia_dev/.../.../x86/目錄。(中間目錄省略)
(3)、運行 ./setenv 設定環境變數,或source setenv命令。
2、編譯例子工程:
在目錄.../qtopia_dev/20060106V1102/x86/qtopia-phone-2.1.1/examples/application/下有一個名為
application的樣本工程,對該工程進行編譯和安裝,可在模擬器中看到運行效果。
編譯步驟:
(1)、進入qtopia_dev/.../.../x86/qtopia-phone-2.1.1/examples/application目錄;
(2)、運行qmake產生Makefile 檔案;
(3)、運行make install 進行編譯和安裝。
3、模擬器上查看運行效果:
(1)、進入.../qtopia_dev/20060106V1102/x86/目錄
(2)、運行./rn.dat 啟動模擬器
4、各個檔案安裝路徑:
(1)、所有編譯後的程式放在
qtopia_dev/.../.../x86/qtopia-phone-2.1.1/image/opt/Qtopia/bin/目錄下;
(2)、程式相應的desktop檔案放在
qtopia_dev/.../.../x86/qtopia-phone-2.1.1/image/opt/Qtopia/apps/Application/目錄下
(3)、所有的程式表徵圖放在qtopia_dev/.../.../x86/pia-phone-2.1.1/image/opt/Qtopia/pics/程式名/目錄下
5、樣本工程中的各個檔案
(1)、application.pro檔案
該檔案中指定工程中用到的各個檔案,檔案包括:原始碼檔案(.c .cpp .h)、資源檔名、目標檔案名、
desktop檔案及路徑、表徵圖檔案及路徑、協助檔案及路徑。
qmake命令在執行過程中訪問application.pro檔案將產生Makefile檔案。
(2)、example.desktop檔案
該檔案將安裝到模擬器和真機上,為了在運行時找到工程的各個檔案。
(3)、example.control檔案
檔案中指定了工程的可執行檔路徑、desktop檔案路徑、協助檔案路徑和表徵圖檔案路徑。
這個檔案我現在還沒有搞清楚:)
(4)、examplebase.ui檔案
該檔案中以XML的格式定義了可視視窗上的各個組件。
(5)、其它檔案
example.html和Example.png分別是工程的協助檔案和表徵圖檔案。
6、建立自己的工程
(1)、在樣本工程的基礎上建立自己的工程:
建立一個自己工程的目錄,將樣本工程中的相關檔案複製到該目錄,在樣本工程的基礎上進行修改。
需要複製的檔案有:main.cpp、application.pro、example.control、example.cpp、example.h、example.desktop、
examplebase.ui、Example.png、example.html。
(2)、修改事項:
application.pro檔案:
A、“application.pro”檔案以.pro為副檔名,檔案名稱要和它所在的目錄名相同;
B、11行,寫上所有工程中用到標頭檔,檔案名稱之間用空格隔開;
C、12行,寫上所有工程中用到.c或.cpp檔案,檔案名稱之間用空格隔開;
D、13行,可視視窗檔案名稱;
E、14行,產生可執行檔名(目標檔案名);
F、18行,.desktop檔案名稱;
G、22行,表徵圖檔案名稱;
H、23行,表徵圖路徑名,以目標檔案名為目錄名;
I、26行,說明檔案名稱;
.desktop檔案
A、7行,可執行檔名;
B、8行,表徵圖檔案名稱;
.ui檔案,該檔案可用QT開發環境修改,也可用文字編輯器修改,
A、第2行,<class>ExampleBase</class>,“ExampleBase”可修改,但一定要與example.h檔案的25行父類名稱一致;
main.cpp檔案
A、該檔案名稱不修改;
B、21行,修改包含的標頭檔名;
C、24行,修改類名;
(3)、編譯自己的工程
A、產生Makefile檔案,在工程的目錄下,運行qmake命令;
B、編譯,在工程的目錄下,運行make命令;
C、安裝,在工程的目錄下,運行make install命令;
四、為真機上運行進行編譯
========================
將代碼用arm編譯器進行編譯,目標檔案就可在真機上運行。
1、必須進行交叉編譯工具的安裝;
2、將工程目錄複寫到.../qtopia_dev/20060106V1102/arm/qtopia-phone-2.1.1/目錄下;
3、編譯;
五、將檔案安裝到真機上
======================
1、裝置間的軟體串連:
串連步驟:
(1)、串連好個連線
(2)、啟動PC到LINUX系統中
(3)、關閉防火牆(service iptables stop)
(4)、掛載進QT的開發包(mount /dev/hda4 /mnt/win)
(5)、手動載入usbdnet.o(進入/mnt/win目錄下,執行install),並在終端確認模組已經載入
(6)、啟動(重起)nfs(service nfs restart)
(7)、啟動minicom(#minicom)
(8)、到/home/目錄下,執行指令碼pc_linux
(9)、在終端啟動USB裝置(ifconfig usb0 192.168.254.1 up)
(10)、在minicom視窗中執行/home/目錄下的linuxrc_run指令碼
(11)、在minicom視窗中執行/home/目錄下的指令碼pc_linux
(12)、檢查目錄/mnt/,是否和目錄/opt/p2fs下的內容一致,若一致,則成功
這裡提供幾個診斷串連成功的方法:
pc啟動候,通過lsmod|grep usbdnet看看模組是否存在,如果不存在,請手動通過./install載入
如果以上都正確,串連手機,如果ifconfig -a 能看到裝置而ifconfig 看不到,請按照文檔設定ip並啟用。
2、檔案安裝目錄:
將編譯好的程式、desktop檔案和表徵圖放在手機上/opt/Qtopia/各自對應的目錄下。
(1)、所有編譯後的程式放在
qtopia_dev/.../arm/qtopia-phone-2.1.1/image/opt/Qtopia/bin/目錄下
(2)、程式相應的desktop檔案放在
qtopia_dev/.../arm/qtopia-phone-2.1.1/image/opt/Qtopia/apps/Application/目錄下
(3)、所有的程式表徵圖放在
qtopia_dev/.../arm/qtopia-phone-2.1.1/image/opt/Qtopia/pics/程式名/ 目錄下
3、重起手機。
六、手機目錄:
/ (根目錄)
|----bin
|----lib
|----home
|----mnt (對應於PC機的/opt/p2fs目錄,該目錄結構可隨意)
|
|----opt
| |----Qtopia
| |----bin (放編譯後的程式)
| |----etc
| |----pics (放表徵圖檔案)
| |----apps
| |--Applications (放desktop檔案)
|
|----Applications (該目錄結構任意,可存放工程自己的檔案)
結束
====