詳解Linux系統(tǒng)中QT(QTopia)平臺開發(fā)
QTopia采用嵌入式Linux操作系統(tǒng)的消費(fèi)電子設(shè)備而開發(fā)的綜合應(yīng)用平臺, Qtopia包含完整的應(yīng)用層、靈活的用戶界面、窗口操作系統(tǒng)、應(yīng)用程序啟動程序以及開發(fā)框架。
一、開發(fā)包的獲取
本例的qtopia開發(fā)包名稱為:qtopia-arm.tar.gz;
二、開發(fā)環(huán)境的搭建
qtopia開發(fā)包運(yùn)行于Linux操作系統(tǒng)上,Linux要求內(nèi)核版本為2.4.18或以上。安裝Linux操作系統(tǒng),
如果只是在PC機(jī)上進(jìn)行模擬器上的開發(fā)和交叉編譯,可將Linux安裝到虛擬機(jī)上。將Linux安裝到虛擬機(jī)上,建議硬盤空間最少分配6G,因為開發(fā)環(huán)境的搭建需要很大空間。
1、qtopia開發(fā)包的安裝步驟>
(1)、將qtopia-arm.tar.gz放到/opt/目錄下
建議放在/opt/目錄下,如果需要將開發(fā)包放到其他的目錄,則解壓后需要修改
qtopia-phone-2.1.1/src/下的config.pri文件。
(2)、用命令tar解壓
在Linux終端中CD到/opt/目錄下,輸入命令 tar -zxf qtopia_dev.tar.gz (回車),幾分鐘后解壓結(jié)束,出現(xiàn)命令提示符,如果報找不到什么目錄或找不到什么文件,輸入命令“df -m”查看硬盤使用情況,一般原因是硬盤空間不足,解壓失敗,刪除硬盤上不需要的文件或重新安裝Linux操作系統(tǒng),把分配硬盤空間更大。
(3)、解壓后生成的目錄為qtopia_dev
2、交叉編譯工具的安裝步驟:
(1)、將cross2compiler.tar.gz放到/opt/目錄下
(2)、用命令tar -zxf cross2compiler.tar.gz 解壓
(3)、解壓后生成的目錄為debugdir
交叉編譯工具的安裝是為了編譯出在真機(jī)上運(yùn)行的可執(zhí)行文件,如果只是在模擬器上開發(fā),可不進(jìn)行交叉工具的安裝。
三、模擬器上開發(fā)
1、配置文件和全局變量的設(shè)置:
(1)、將.../qtopia_dev/.../x86/Settings目錄放到/root/目錄下,如果已經(jīng)有/root/Settings目錄,則進(jìn)行覆蓋。
(2)、進(jìn)入qtopia_dev/.../.../x86/目錄。(中間目錄省略)
(3)、運(yùn)行 ./setenv 設(shè)置環(huán)境變量,或source setenv命令。
2、編譯例子工程:
在目錄.../qtopia_dev/x86/qtopia-phone-2.1.1/examples/application/下有一個名為
application的示例工程,對該工程進(jìn)行編譯和安裝,可在模擬器中看到運(yùn)行效果。
編譯步驟:
(1)、進(jìn)入qtopia_dev/.../.../x86/qtopia-phone-2.1.1/examples/application目錄;
(2)、運(yùn)行qmake生成Makefile 文件;
(3)、運(yùn)行make install 進(jìn)行編譯和安裝。
3、模擬器上查看運(yùn)行效果:
(1)、進(jìn)入.../qtopia_dev/20060106V1102/x86/目錄
(2)、運(yùn)行./rn.dat 啟動模擬器
4、各個文件安裝路徑:
(1)、所有編譯后的程序放在
qtopia_dev/.../.../x86/qtopia-phone-2.1.1/image/opt/Qtopia/bin/目錄下;
(2)、程序相應(yīng)的desktop文件放在
qtopia_dev/.../.../x86/qtopia-phone-2.1.1/image/opt/Qtopia/apps/Application/目錄下
(3)、所有的程序圖標(biāo)放在qtopia_dev/.../.../x86/pia-phone-2.1.1/image/opt/Qtopia/pics/程序名/目錄下
5、示例工程中的各個文件
(1)、application.pro文件
該文件中指定工程中用到的各個文件,文件包括:源代碼文件(.c .cpp .h)、資源文件名、目標(biāo)文件名、
desktop文件及路徑、圖標(biāo)文件及路徑、幫助文件及路徑。
qmake命令在執(zhí)行過程中訪問application.pro文件將生成Makefile文件。
(2)、example.desktop文件
該文件將安裝到模擬器和真機(jī)上,為了在運(yùn)行時找到工程的各個文件。
(3)、example.control文件
文件中指定了工程的可執(zhí)行文件路徑、desktop文件路徑、幫助文件路徑和圖標(biāo)文件路徑。
這個文件我現(xiàn)在還沒有搞清楚:)
(4)、examplebase.ui文件
該文件中以XML的格式定義了可視窗口上的各個部件。
(5)、其它文件
example.html和Example.png分別是工程的幫助文件和圖標(biāo)文件。
6、建立自己的工程
(1)、在示例工程的基礎(chǔ)上建立自己的工程:新建一個自己工程的目錄,將示例工程中的相關(guān)文件復(fù)制到該目錄,在示例工程的基礎(chǔ)上進(jìn)行修改。需要復(fù)制的文件有:main.cpp、application.pro、example.control、example.cpp、example.h、example.desktop、examplebase.ui、Example.png、example.html。
(2)、修改事項:
application.pro文件:
“application.pro”文件以.pro為擴(kuò)展名,文件名要和它所在的目錄名相同;
11行,寫上所有工程中用到頭文件,文件名之間用空格隔開;
12行,寫上所有工程中用到.c或.cpp文件,文件名之間用空格隔開;
13行,可視窗口文件名;
14行,生成可執(zhí)行文件名(目標(biāo)文件名);
18行,.desktop文件名;
22行,圖標(biāo)文件名;
23行,圖標(biāo)路徑名,以目標(biāo)文件名為目錄名;
26行,說明文件名;
desktop文件
A、7行,可執(zhí)行文件名;
B、8行,圖標(biāo)文件名;
.ui文件,該文件可用QT開發(fā)環(huán)境修改,也可用文本編輯器修改,
A、第2行,<class>ExampleBase</class>,“ExampleBase”可修改,但一定要與example.h文件的25行父類名稱一致;
main.cpp文件
A、該文件名不修改;
B、21行,修改包含的頭文件名;
C、24行,修改類名;
(3)、編譯自己的工程
A、生成Makefile文件,在工程的目錄下,運(yùn)行qmake命令;
B、編譯,在工程的目錄下,運(yùn)行make命令;
C、安裝,在工程的目錄下,運(yùn)行make install命令;
四、為真機(jī)上運(yùn)行進(jìn)行編譯
將代碼用arm編譯器進(jìn)行編譯,目標(biāo)文件就可在真機(jī)上運(yùn)行。
1、必須進(jìn)行交叉編譯工具的安裝;
2、將工程目錄復(fù)制到.../qtopia_dev/20060106V1102/arm/qtopia-phone-2.1.1/目錄下;
3、編譯;
五、將文件安裝到真機(jī)上
1、設(shè)備間的軟件連接:
連接步驟:
(1)、連接好個連線
(2)、啟動PC到Linux系統(tǒng)中
(3)、關(guān)閉防火墻(service iptables stop)
(4)、掛載進(jìn)QT的開發(fā)包(mount /dev/hda4 /mnt/win)
(5)、手動加載usbdnet.o(進(jìn)入/mnt/win目錄下,執(zhí)行install),并在終端確認(rèn)模塊已經(jīng)加載
(6)、啟動(重起)nfs(service nfs restart)
(7)、啟動minicom(#minicom)
(8)、到/home/目錄下,執(zhí)行腳本pc_Linux
(9)、在終端啟動USB設(shè)備(ifconfig usb0 192.168.254.1 up)
(10)、在minicom窗口中執(zhí)行/home/目錄下的Linuxrc_run腳本
(11)、在minicom窗口中執(zhí)行/home/目錄下的腳本pc_Linux
(12)、檢查目錄/mnt/,是否和目錄/opt/p2fs下的內(nèi)容一致,若一致,則成功
這里提供幾個診斷連接成功的方法:
pc啟動候,通過lsmod|grep usbdnet看看模塊是否存在,如果不存在,請手動通過./install加載
如果以上都正確,連接手機(jī),如果ifconfig -a 能看到設(shè)備而ifconfig 看不到,請按照文檔設(shè)置ip并激活。
2、文件安裝目錄:
將編譯好的程序、desktop文件和圖標(biāo)放在手機(jī)上/opt/Qtopia/各自對應(yīng)的目錄下。
(1)、所有編譯后的程序放在
qtopia_dev/.../arm/qtopia-phone-2.1.1/image/opt/Qtopia/bin/目錄下
(2)、程序相應(yīng)的desktop文件放在
qtopia_dev/.../arm/qtopia-phone-2.1.1/image/opt/Qtopia/apps/Application/目錄下
(3)、所有的程序圖標(biāo)放在
qtopia_dev/.../arm/qtopia-phone-2.1.1/image/opt/Qtopia/pics/程序名/ 目錄下
3、重起手機(jī)。
六、手機(jī)目錄:
- / (根目錄)
- |----bin
- |----lib
- |----home
- |----mnt (對應(yīng)于PC機(jī)的/opt/p2fs目錄,該目錄結(jié)構(gòu)可隨意)
- |
- |----opt
- | |----Qtopia
- | |----bin (放編譯后的程序)
- | |----etc
- | |----pics (放圖標(biāo)文件)
- | |----apps
- | |--Applications (放desktop文件)
- |
- |----Applications (該目錄結(jié)構(gòu)任意,可存放工程自己的文件)