Qt開發(fā)環(huán)境建立與Qtopia 虛擬平臺(tái)
本文介紹的是Qt開發(fā)環(huán)境建立與Qtopia 虛擬平臺(tái),Qtopia包含完整的應(yīng)用層、靈活的用戶界面、窗口操作系統(tǒng)、應(yīng)用程序啟動(dòng)程序以及開發(fā)框架。請(qǐng)看內(nèi)容。
開發(fā)模式:
在宿主機(jī)RedHat上通過qvfb來模擬幀緩沖
開發(fā)完畢后使用qt-embedded重新編譯后下載程序到ARM上運(yùn)行(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 //為了生成相應(yīng)的QT工具,如designer和qvfb等
- e2fsprogs-1.39 //解決configure時(shí)出現(xiàn)的問題
宿主機(jī)Qt的安裝:
注:以下安裝步驟在Redhat 9系統(tǒng)下測(cè)試通過,安裝步驟參考了MagicARM2410平臺(tái)實(shí)驗(yàn)手冊(cè)。
在/zylinux下建立目錄 x86-qtopia 所有的軟件包都復(fù)制到該目錄下
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 用于生成應(yīng)用程序的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的配置比較復(fù)雜 詳細(xì)查看./configure --help
make -C tools/designer 圖形設(shè)計(jì)器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
- (配置時(shí)設(shè)置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)境變量沒設(shè)好,將會(huì)出現(xiàn)錯(cuò)誤:
- global1.cpp:39:23: uuid/uuid.h: 沒有那個(gè)文件或目錄
- 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機(jī)上運(yùn)行QPE
- qvfb &
- qpe &
注:如果運(yùn)行時(shí)找不到某些庫,則需要設(shè)置庫路徑:
在/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的庫生效。
程序的運(yùn)行方式:
- ./qvfb &
- /canvas –qws (一般調(diào)試時(shí)采用這種方式)
注意:QT默認(rèn)顯示窗口大小為240x320像素,指定其他窗口大?。?/p>
- qvfb -width 640 -height 480 &
#p#
7.將自己開發(fā)的安裝在Qtopia中:
1. 在/x86-qtopia目錄下建立文件夾hello,并編寫
相應(yīng)的程序,執(zhí)行:
- make
編譯完后程序生成在$QPEDIR/bin下
2. 設(shè)置配置文件hello.desktop并復(fù)制配置文件到
$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. 修改圖標(biāo):
設(shè)計(jì)32*32的PNG圖片放到<Qtopia>/pics/inline目
錄下,然后用qembed轉(zhuǎn)換
- 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ā)前需要導(dǎo)出環(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
小結(jié):關(guān)于Qt開發(fā)環(huán)境建立與Qtopia 虛擬平臺(tái)的內(nèi)容介紹完了。對(duì)于Qtopia,它有三個(gè)把版本,分別是Qtopia 手機(jī)版、Qtopia PDA 版和Qtopia 消費(fèi)電子產(chǎn)品平臺(tái)。Qtopia 手機(jī)版: 面向嵌入式Linux 的Qtopia 手機(jī)版(Qtopia Phone) 是Qtopia 的一個(gè)自定義版本用于內(nèi)存有限的智能手機(jī)和功能手機(jī)它的用戶界面可自定義內(nèi)存占用量低手機(jī)制造商使用它可以創(chuàng)建令人贊嘆的圖形用戶界面從而令手機(jī)卓越超群Qtopia 手機(jī)版有兩個(gè)版本鍵盤驅(qū)動(dòng)和手寫筆驅(qū)動(dòng)。