Qtopia 2.2.0主機版的編譯與應用程序的模擬

admin @ 2014-03-25 , reply:0

一、編譯過程
    解壓qtopia-free-2.2.0.tar.gz,並將解壓后的文件夾改名為qtopia-host.
    編譯方法以及參數設置可以查看頂層目錄下的configure腳本文件的內容以及幫助信息.
#./configure -qte no-keypad -qpe pda
#make
#make install
    qtopia2.2.0 版本自帶了一些編譯的環境變數的配置腳本,可以自動幫我們配置並編譯qt-x11-2.x,qt-x11-3.x,qte-2.x 和qtopia-2.2.0,並進行目錄結構的組織.
注意:
(1)qt-x11-2.x和qte-2.x是由源碼包中的qt2目錄編譯得到; qt-x11-3.x是由dqt編譯得到;
(2)在編譯前進行configure 時可以採用-prefix 選項來指定安裝時的image 目錄(可參考QT官方相關文檔:Build from Source以及running Qtopia).

二、make install 之後的image 文件夾
    make install之後會在./qtopia/image下有image文件夾,即./qtopia/image/opt/Qtopia 目錄.目錄下有bin,lib,etc,apps...等等文件夾,實際上對應於要燒錄進嵌入式文件系統的文件結構組織.
-> lib 下有運行qtopia 應用程序的全部庫,如libqte,libqpe,libqtopia 等等,注意由於是主機版,沒有編譯觸摸屏的庫,因此這裡沒有libts.
-> bin下則是qtopia 應用程序,包括qpe,quicklaucher 等,另外還有clock,addressbook....
-> 用於在主機上模擬PDA 的qtopia 環境的startdemo 腳本也在這個bin 目錄下,注意,在./qtopia/bin 下只有qpe,quicklaucher 等服務程序,而沒有clock,addressbook...等應用程序,因此,如果象qtopia1.7.0一樣設置環境變數,先運行qvfb再運行這個qpe,圖標對應的應用程序是無法執行的.而startdemo 會自動調用qvfb 並且將image 下的qtopia 文件系統載入到qvfb 中運行.關於環境變數的設置,後面介紹.

三、在主機上開發並模擬qtopia 應用程序
    開發應用程序所需要的:
(1)工具:qvfb(模擬),qmake(生成makefile),uic(編譯ui 文件),designer(圖形化界面設計工具)
(2)庫:libqte, libqpe, libqtopia 等(與運行時所需庫相同,因為是動態共享庫)
(3)與庫對應的頭文件!
    因此在開發qtopia 應用程序時,必須將這些環境變數設置好.可編寫腳本setdevenv.sh 如下:
#!/bin/sh
TMAKEDIR=/opt/qtopia-host/tmake
TMAKEPATH=/opt/qtopia-host/tmake/lib/qws/linux-generic-g++
QMAKESPEC=qws/linux-generic-g++
QPEDIR=/opt/qtopia-host/qtopia/
QTDIR=/opt/qtopia-host/qt2/
PATH=$TMAKEDIR/bin:$QPEDIR/bin:$QTDIR/bin:$PATH
LD_LIBRARY_PATH=$QPEDIR/image/opt/Qtopia/lib:$QTDIR/lib:$LD_LIBRARY_PATH
export TMAKEDIR TMAKEPATH QTDIR QPEDIR PATH LD_LIBRARY_PATH QMAKESPEC
    可以看到,所用的lib 雖然是設置為image下的lib,但image下卻沒有相關的頭文件(沒有include 文件夾,image 只提供程序運行支持,不提供源碼編譯以及鏈接支持),因此,必須另外設置QPEDIR和QTDIR,以在編譯qtopia 應用程序時,可以找到相關的頭文件.
    在這個腳本的環境變數設置下,編譯好qtopia應用程序后,可以使用startdemo來調用qvfb進行模擬,界面如下.
 
    如果先啟動qvfb,再啟動qpe,雖然可以看到模擬界面,但其自帶的一些應用程序是無法運行的,因為qpe載入QPEDIR指定的文件系統目錄,而qtopia2.2.0的應用程序可執行文件放在image 下的bin 目錄中;而startdemo 則總是載入image 下的Qtopia 文件系統.因此,使用startdemo模擬時,所開發的應用程序以及.desktop和圖標等也要放在image下相應的目錄下.
    關於工具列表:
/opt/qtopia-host/qt2/bin/designer
/opt/qtopia-host/qt2/bin/qvfb
/opt/qtopia-host/qt2/bin/uic
/opt/qtopia-host/qtopia/bin/qmake (1.06c-Qtopia, Qt 3.2.1)
    注意在/opt/qtopia-host/dqt/bin/下也有qmake(1.07a, Qt 3.3.5),不過兩者版本不同.可以使用./qmake -v命令查看.
    如果要使用qvfb 下啟動qpe 的辦法來模擬(好處是可以配置qvfb 窗口大小),則需要將
qvfb 鏈接到PATH 內,並編寫環境變數配置腳本setsimenv.sh如下:
#!/bin/sh
QPEDIR=/opt/qtopia-host/qtopia/image/opt/Qtopia
QTDIR=$QPEDIR
PATH=$QPEDIR/bin:/opt/qtopia-host/qt2/bin:$PATH
LD_LIBRARY_PATH=$QPEDIR/lib:$LD_LIBRARY_PATH
export QPEDIR QTDIR PATH LD_LIBRARY_PATH
    模擬時輸入命令:
#qvfb&
#qpe&
    模擬界面如下:
 

四、關於Qtopia2.2.0 的文件系統組織結構
    '/'代表$QPEDIR
    應用程序可執行文件example -> /bin/example
    應用程序qtopia 桌面圖標example.png -> /pics/example/example.png (32*32pixels)
    應用程序.desktop文件 -> /apps/Applications/example.desktop
    注意.desktop文件的格式與qtopia1.7.0版本稍有不同,例如clock.desktop:
[Translation]
File=QtopiaApplications
Context=Clock
[Desktop Entry]
Comment[]=A Clock Program #應用程序說明
Exec=clock #/bin下可執行文件名
Icon=Clock #/pics/clock/Clock.png,不用寫後綴.png
Type=Application #qtopia 程序類型(Application/Game/Setting)
Name[]=Clock #桌面圖標下顯示的名字

五、Qtopia 應用程序在主機上模擬運行
    如果使用上面的setsimenv.sh進行環境變數的設置,可以有兩種方式進行模擬:
(1)先啟動qvfb:#qvfb&
    再將應用程序example作為qte服務程序運行:#./example -qws
(2)將應用程序example 作為應用程序添加到qtopia 相關目錄(包括可執行文件,圖標,.desktop文件),然後啟動qvfb再啟動qpe來載入qtopia桌面環境,點擊example桌面圖標運行程序.也可以使用startdemo進行載入.
    如果使用上面的setdevenv.sh進行環境變數的設置,在第二種方法中,只能用startdemo 載入.




[admin via 研發互助社區 ] Qtopia 2.2.0主機版的編譯與應用程序的模擬已經有769次圍觀

http://cocdig.com/docs/show-post-42139.html