Qt開發(fā)環(huán)境建立與Qtopia 虛擬平臺
本文介紹的是Qt開發(fā)環(huán)境建立與Qtopia 虛擬平臺,Qtopia包含完整的應用層、靈活的用戶界面、窗口操作系統(tǒng)、應用程序啟動程序以及開發(fā)框架。請看內(nèi)容。
開發(fā)模式:
在宿主機RedHat上通過qvfb來模擬幀緩沖
開發(fā)完畢后使用qt-embedded重新編譯后下載程序到ARM上運行(ARM上需要安裝Qt)
開發(fā)所需軟件:
- tmake-1.11.tar.gz //編譯工具,如progen與tmake
 - qtopia-free-1.7.0.tar.gz //QTE的桌面環(huán)境程序
 - qt-embedded-2.3.7.tar.gz //提供qte的庫
 - qt-x11-2.3.2.tar.gz //為了生成相應的QT工具,如designer和qvfb等
 - e2fsprogs-1.39 //解決configure時出現(xiàn)的問題
 
宿主機Qt的安裝:
注:以下安裝步驟在Redhat 9系統(tǒng)下測試通過,安裝步驟參考了MagicARM2410平臺實驗手冊。
在/zylinux下建立目錄 x86-qtopia 所有的軟件包都復制到該目錄下
1.安裝tmake
- tar xzvf tmake-1.11.tar.gz
 - export TMAKEDIR=/zylinux/x86-qtopia/tmake-1.11
 - export TMAKEPATH=/zylinux/x86-qtopia/tmake-1.11/lib/qws/linux-x86-g++
 - export PATH=$PATH:/zylinux/x86-qtopia/tmake-1.11/bin/
 
Tmake配置文件:Tmake.conf
Tmake的模板:app.t 用于生成應用程序的Makefile
lib.t 用于生成庫文件的Makefile
subdirs.t 用于創(chuàng)建編譯子目錄中程序的Makefile
2.安裝Qt/X11
- tar xzvf qt-x11-2.3.2.tar.gz
 - cd qt-2.3.2/
 - export QTDIR=$PWD
 - export PATH=$QTDIR/bin:$PATH
 - export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
 - ./configure -static -no-xft -no-opengl
 - make
 - make -C tools/qvfb
 - mv tools/qvfb/qvfb bin
 - cd ..
 
Qt的配置比較復雜 詳細查看./configure --help
make -C tools/designer 圖形設計器designer
3.解壓Qtopia
- tar xzvf qtopia-free-1.7.0.tar.gz
 - mv qtopia-free-1.7.0 qtopia
 - export QPEDIR=$PWD/qtopia
 - export PATH=$QPEDIR/bin:$PATH
 
4.安裝Qt/Embeded
這里使用了QPE的配置文件
- tar xzvf qt-embedded-2.3.7.tar.gz
 - cd qt-2.3.7
 - export QTDIR=$PWD
 - export QTEDIR=$QTDIR
 - export PATH=$QTDIR/bin:$PATH
 - export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
 - cp ../qt-2.3.2/bin/uic $QTEDIR/bin
 - cp $QPEDIR/src/qt/qconfig-qpe.h src/tools
 - (echo yes; echo yes)|./configure -platform linux-x86-g++ -qconfig qpe -qvfb -depths 4,8,16,32
 - (配置時設置qvfb: ./configure -qconfig -qvfb -depths 4,8,16,32)
 - make sub-src //make -C src
 - cd ..
 
5.安裝Qtopia
- cd qtopia
 - cd src
 - ./configure -platform linux-x86-g++
 
(如果環(huán)境變量沒設好,將會出現(xiàn)錯誤:
- global1.cpp:39:23: uuid/uuid.h: 沒有那個文件或目錄
 - global1.cpp: In static member function `static QUuid Global::generateUuid()':
 - global1.cpp:188: `::uuid_generate' undeclared (first use here)
 - make[1]: *** [.obj/linux-generic-g++//global1.o] Error 1
 - make[1]: Leaving directory `/root/x86-qtopia/qtopia-free-1.7.0/src/libraries/qtopia1'
 - make: *** [libraries/qtopia1] Error 2
 
解決方法:安裝 e2fsprogs-1.39
- tar zxvf e2fsprogs-1.39
 - cd e2fsprogs-1.39
 - ./configure -enable-elf-shlibs
 - make
 - make install lib/uuid/
 
問題一: 找不到 uuid.h
把e2fsprogs-1.39/lib/uuid 目錄拷貝到 qtopia-free-1.7.0/include
問題二: 找不到 -luuid
把e2fsprogs-1.39/lib/uuid/libuuid.a 文件拷貝到 usr/lib 或者 qtopia-free-1.7.0/lib)
- make
 - cd ../..
 
6.在PC機上運行QPE
- qvfb &
 - qpe &
 
注:如果運行時找不到某些庫,則需要設置庫路徑:
在/etc/ld.so.conf文件中增加Qt庫的路徑
- /zylinux/x86-qtopia/qt-2.3.7/lib
 - /zylinux/x86-qtopia/qtopia/lib
 
添加完路徑后,在/etc目錄下以root身份執(zhí)行l(wèi)dconfig使Qt的庫生效。
程序的運行方式: 
 
- ./qvfb &
 - /canvas –qws (一般調(diào)試時采用這種方式)
 
注意:QT默認顯示窗口大小為240x320像素,指定其他窗口大?。?/p>
- qvfb -width 640 -height 480 &
 
#p#
7.將自己開發(fā)的安裝在Qtopia中:
1. 在/x86-qtopia目錄下建立文件夾hello,并編寫
相應的程序,執(zhí)行:
- make
 
編譯完后程序生成在$QPEDIR/bin下
2. 設置配置文件hello.desktop并復制配置文件到
$PEDIR/apps/Applications下:
配置文件內(nèi)容:
- [Desktop Entry]
 - Comment=An Hello Demo.
 - Exec=hello
 - Icon=Hello
 - Type=Application
 - Name=Hello
 
執(zhí)行命令:
- cp hello.desktop $PEDIR/apps/Applications
 
3. 執(zhí)行程序:
- qvfb &
 - qpe
 
4. 修改圖標:
設計32*32的PNG圖片放到<Qtopia>/pics/inline目
錄下,然后用qembed轉換
- qembed -images $QPEIDR/pics/inline/*.* >
 - $QPEIDR/src/librabies/qtopia
 
配置腳本(以上前五步的完整安裝,所有需要文件放在/zylinux/x86-qtopia下,執(zhí)行./build):
- #!/bin/bash
 - echo remove old dirs
 - rm -rf tmake
 - rm -rf qt
 - rm -rf qt-x11
 - rm -rf qtopia
 - echo Unpack all packages
 - tar xzvf tmake-1.11.tar.gz
 - tar xzvf qt-embedded-2.3.7.tar.gz
 - tar xzvf qt-x11-2.3.2.tar.gz
 - tar xzvf qtopia-free-1.7.0.tar.gz
 - echo rename
 - mv tmake-1.11 tmake
 - mv qtopia-free-1.7.0 qtopia
 - mv qt-2.3.7 qt
 - echo Start Install Qt-X11
 - cd qt-2.3.2
 - export QTDIR=$PWD
 - echo yes|./configure -static -no-xft -no-opengl -no-sm
 - make -C src/moc
 - cp src/moc/moc bin
 - make -C src
 - make -C tools/designer
 - make -C tools/qvfb
 - cp tools/qvfb/qvfb bin
 - strip bin/uic bin/moc bin/designer bin/qvfb
 - #cp bin/uic $QTEDIR/bin
 - cp bin/?* ../qt/bin
 - cd ..
 - #cp $QTDIR/bin/?* qt/bin
 - mv qt-2.3.2 qt-x11
 - echo Start Setting env-var
 - export QTDIR=$PWD/qt
 - export QTEDIR=$QTDIR
 - export QPEDIR=$PWD/qtopia
 - export TMAKEDIR=$PWD/tmake
 - export TMAKEPATH=$TMAKEDIR/lib/qws/linux-generic-g++
 - export PATH=$QTDIR/bin:$QPEDIR/bin:$TMAKEDIR/bin:$PATH
 - export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
 - echo Start build Qt/Embedded
 - cd qt
 - make clean
 - cp $QPEDIR/src/qt/qconfig-qpe.h src/tools
 - (echo yes; echo yes)|./configure -platform linux-generic-g++ -qconfig qpe -qvfb -depths 16,24,32
 - make -C src
 - cd ..
 - echo Start Build Qtopia
 - cd qtopia/src
 - ./configure -platform linux-generic-g++
 - make
 - echo OK
 
這樣安裝完后的安置路徑為:
- qt-embedded-2.3.7.tar.gz /zylinux/x86-qtopia/qt
 - qtopia-free-1.7.0.tar.gz /zylinux/x86-qtopia/qtopia
 - qt-x11-2.3.2.tar.gz /zylinux/x86-qtopia/qt-x11
 - tmake-1.11.tar.gz /zylinux/x86-qtopia/tmake
 
安裝完畢,開發(fā)前需要導出環(huán)境變量:
- export QTDIR=$PWD/qt
 - export QPEDIR=$PWD/qtopia
 - export TMAKEDIR=$PWD/tmake
 - export TMAKEPATH=$TMAKEDIR/lib/qws/linux-generic-g++
 - export PATH=$QTDIR/bin:$QPEDIR/bin:$TMAKEDIR/bin:$PATH
 
小結:關于Qt開發(fā)環(huán)境建立與Qtopia 虛擬平臺的內(nèi)容介紹完了。對于Qtopia,它有三個把版本,分別是Qtopia 手機版、Qtopia PDA 版和Qtopia 消費電子產(chǎn)品平臺。Qtopia 手機版: 面向嵌入式Linux 的Qtopia 手機版(Qtopia Phone) 是Qtopia 的一個自定義版本用于內(nèi)存有限的智能手機和功能手機它的用戶界面可自定義內(nèi)存占用量低手機制造商使用它可以創(chuàng)建令人贊嘆的圖形用戶界面從而令手機卓越超群Qtopia 手機版有兩個版本鍵盤驅(qū)動和手寫筆驅(qū)動。















 
 
 

 
 
 
 