詳解Linux系統中QT(QTopia)平臺開發
QTopia采用嵌入式Linux操作系統的消費電子設備而開發的綜合應用平臺, Qtopia包含完整的應用層、靈活的用戶界面、窗口操作系統、應用程序啟動程序以及開發框架。
一、開發包的獲取
本例的qtopia開發包名稱為:qtopia-arm.tar.gz;
二、開發環境的搭建
qtopia開發包運行于Linux操作系統上,Linux要求內核版本為2.4.18或以上。安裝Linux操作系統,
如果只是在PC機上進行模擬器上的開發和交叉編譯,可將Linux安裝到虛擬機上。將Linux安裝到虛擬機上,建議硬盤空間最少分配6G,因為開發環境的搭建需要很大空間。
1、qtopia開發包的安裝步驟>
(1)、將qtopia-arm.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/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文件:
“application.pro”文件以.pro為擴展名,文件名要和它所在的目錄名相同;
11行,寫上所有工程中用到頭文件,文件名之間用空格隔開;
12行,寫上所有工程中用到.c或.cpp文件,文件名之間用空格隔開;
13行,可視窗口文件名;
14行,生成可執行文件名(目標文件名);
18行,.desktop文件名;
22行,圖標文件名;
23行,圖標路徑名,以目標文件名為目錄名;
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 (該目錄結構任意,可存放工程自己的文件)