1、開發環境的構建
1.下載Qt源代碼,包括桌面版和嵌入式版
如4.7.4版:qt-everywhere-opensource-src-4.7.4.tar.gz
qt-everywhere-opensource-src-4.7.4[embedded].tar.gz
解壓縮到當前目錄:tar -xzvf qt-everywhere-opensource-src-4.7.4.tar.gz
2.編譯安裝桌面版和嵌入式版
桌面版通常爲默認配置安裝:./configure ; sudo make; sudo make install;
嵌入式版安裝做爲開發用,也通常能夠爲默認安裝,但必須指定目標類型與主機類型
(1) 首先須要指定目標類型,利用現有的或者修改、添加目標類型
a.進入mkspecs/qws/文件夾中:cd mkspecs/qws
b.找到你的目標類型文件夾而且拷貝一份:cp linux-arm-g++ linux-omapl138-g++ -a
c.進入你的目標文件夾中以修改qmake.conf配置文件,主要是修改交叉編譯器:
cd linux-omapl138-g++;gedit qmake.conf
修改文件中的以下內容以符合你的交叉開發環境:
# modifications to g++.conf
QMAKE_CC = arm-none-linux-gnueabi-gcc (交叉編譯器)
QMAKE_CXX = arm-none-linux-gnueabi-g++
QMAKE_LINK = arm-none-linux-gnueabi-g++
QMAKE_LINK_SHLIB = arm-none-linux-gnueabi-
# modifications to linux.conf
QMAKE_AR = arm-none-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = arm-none-linux-gnueabi-objcopy
QMAKE_STRIP = arm-none-linux-gnueabi-strip
保存修改,完成目標配置文件的添加,回到qt主目錄.
(2)執行configure進行安裝前的配置,它會自動執行qt的qmake,讀取各工程依據配置選項生成makefile文件
(echo o ; echo yes ) | ./configure \
-prefix /home/realtimedsp/703-project/tools/qte-4.7.4-703 \ (指定安裝目錄)
-embedded arm -platform /qws/linux-x86-g++ -xplatform /qws/linux-omapl138-g++ \ (指定目標)
-depths 16,24,32 (指定顏色深度)
(3)配置結束後,就是編譯安裝了:make; make install (注意安裝位置的讀寫權限,不然會失敗)
2、應用設計及編碼
推薦使用Qt提供的QtCreator IDE進行編碼開發,在Qt的官網上能夠直接下載到二進制的bin文件,直接安裝就行了
./qt-creator-linux-x86-opensource-2.4.1.bin
由於它與Qt的庫進行了完美的集成:從編碼到調試,從項目管理到幫助文檔,以及跨平臺開發,能夠極大地提升Qt
應用開發的效率。
編碼完成後先在主機上進行調試,保證能夠正確地實現全部的功能後,再移植到目標平臺上進行調試、測試,這一
步在QtCreator上能夠很輕鬆地完成。
3、QTE應用的開發板測試
(1)首先須要在開發板上安裝QTE的動態庫,這樣QTE應用才能正確地運行起來
a.從以前安裝的嵌入式QT版本文件夾中拷貝庫目錄:lib/ 目錄到開發板使用的文件系統中,建議存放位置:
/opt/QTE/
b.配置環境變量,以使應用程序找到QTE的動態庫文件:
(能夠把下面的配置寫到profile文件中,也能夠寫成一個腳本)
export QTEDIR=/opt/QTE/
export LD_LIBRARY_PATH=$QTEDIR/lib:$LD_LIBRARY_PATH
export QWS_SIZE=640x480
c.而後把交叉編譯好的QTE應用下到開發板的文件系統上,而且經過超級終端之類的方式在開發板上運行應用
./EST703 -qws (必須加上-qws選項,以指定應用自身做爲QTE的Server進行圖形界面的繪製與管理)
4、QTE庫的自定義配置(QTE庫的裁減)
經過指定應用使用了的特性,裁減掉不須要的特性來自定義QTE,從而下降QTE動態庫的大小,下降資源的消耗。
當應用的功能測試及調試已經基本完成之後,就能夠開始進行應用的性能的測試與調試了。
性能的測試與優化主要能夠從兩個方面入手:
1.QTE的動態庫的裁減優化
2.應用自身的代碼重構優化
這裏主要說明一下QTE庫的裁減配置:
(1).配置工做主要是在執行./configure這一步驟上,經過指定相應的選項與配置文件來生成自定義的makefile
文件,以後的編譯與安裝步驟和前面同樣:make;make install;
(2).configure命令有不少的選項,大部分的選項能夠從字面理解其做用與含義,能夠經過./configure --help
命令查看全部的選項及其說明。在不是徹底熟悉的狀況下,建議把其導出到文件以方便隨時查看:
./configure --help > qteconf_help.txt
(3).配置工做主要是裁減掉不須要的特性,也就是指定 -no-* 形式的選項,這須要根據具體的項目應用進行具體
的配置,固然必須對各選項的特性是什麼瞭解清楚。(多查看選項幫助中的說明)
(4).configure的選項配置示例(703A):
(echo o ; echo yes ) | ./configure \
-prefix /home/realtimedsp/703-project/tools/qte-4.7.4-703 \
-embedded arm -platform /qws/linux-x86-g++ -xplatform /qws/linux-omapl138-g++ \
-depths 16,24,32 \
-no-largefile \
-release \
-fast \
-no-dbus \
-no-sql-sqlite \
-qt-libpng \
-qt-freetype \
-little-endian -host-little-endian \
-no-svg \
-no-qt3support \
-no-libtiff -no-libmng \
-no-mmx -no-sse -no-sse2 -no-sse3 \
-no-3dnow \
-no-openssl \
-no-phonon \
-no-opengl \
-no-cups \
-no-qvfb \
-no-gif \
-no-webkit \
-no-javascript-jit \
-no-script \
-no-xmlpatterns \
-no-kbd-tty -no-kbd-linuxinput -no-kbd-qvfb -no-kbd-qnx \
-no-mouse-tslib -no-mouse-pc -no-mouse-linuxtp -no-mouse-linuxinput \
-no-mouse-tslib -no-mouse-qvfb -no-mouse-qnx \
-no-xcursor -no-xfixes -no-xrandr -no-xrender \
-nomake examples -nomake tools -nomake docs -nomake demos
(5).配置選項是從一個比較大的粒度去裁減QTE庫的功能特性,若是須要從一個更小更細的粒度去定製QTE庫,那就
須要編輯qconfig-xxx.h配置文件,經過定義各類特性宏(features)來裁減QTE庫了。
a.首先找到並進入相應的文件所在目錄,主要是:qconfig-xxx.h類文件以及features.txt文件
cd src/corelib/global/
>>features.txt文件對能夠進行配置的全部特性進行了一個簡單的說明,在進行配置時,隨時查看該文件是個良好的
習慣,尤爲要注意的是文件中每一個特性的 Requires: 字段,它指定了該特性對其它特性的依賴關係,一旦你的配
置沒有知足這個依賴關係,那麼你將可能沒法編譯成功QTE庫,或者編譯成功可是沒法運行應用。
>>Qt默認提供了5個qconfig-xxx.h的配置文件,從裁減特性多到少排序依次爲:
qconfig-minimal.h qconfig-small.h qconfig-medium.h qconfig-large.h qconfig-dist.h
經過查看這些文件能夠發現,其只是進行一個宏的定義,難度在於清楚哪些特性是須要的,哪些能夠#define掉。
b.新建一個工程本身的配置文件,如:qconfig-703.h,從上面五個配置文件中拷貝一下內容到該文件,如從
qconfig-minimal.h拷貝,而後配置特性:
>>取消對應的宏定義,若是應用須要該特性;
>>增長對應的宏定義,若是應用不須要某個特性.
如703A中顯示不須要鼠標指針,因此須要以下的宏定義:
#ifndef QT_NO_QWS_ALPHA_CURSOR
# define QT_NO_QWS_ALPHA_CURSOR
#endif
#ifndef QT_NO_QWS_CURSOR
# define QT_NO_QWS_CURSOR
#endif
c.編輯好qconfig-703.h配置文件後,把它添加到./configure配置選項的後面,即在上面的選項最後添加:
-qconfig 703
而後就能夠開始配置、編譯與安裝了.
(6).安裝成功後,就可使用其進行應用的構建與開發板運行了。記得要用該版本的lib/替換掉開發板上
以前的lib/。
若是構建出錯或者運行出錯,那應該是配置出問題了,須要返回到上面的配置步驟進行檢查與修改。
5、QTE應用中文顯示
在開發板上實現應用的中文顯示是一個稍微麻煩的事情,由於嵌入式os通常缺少必要的中文字體庫與相應的編碼
識別。所以解決中文顯示主要是兩個工做:
1.肯定QTE應用代碼中中文編輯使用的編碼是什麼,也就是你的代碼編輯環境中字符編碼是什麼。QtCreator平臺中
默認的字符編碼是UTF-8.
>>而後在main.cpp中指定對應的編碼解釋:(記得對中文字符串使用tr()函數)
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
2.肯定開發板的文件系統上是否有中文字體庫(通常是沒有的),在開發板的Qt庫目錄下添加中文字體庫,即前面的:
/opt/QTE/lib/fonts目錄下。
linux平臺上的中文字體庫很少,比較經常使用的是文泉驛字體,能夠從網上下載,它是開源的。我下載使用的是:
wqy-zenhei-0.9.45.tar.gz
解壓縮,把裏面的wqy-zenhei.ttc字體庫文件拷貝到上面的fonts目錄裏面就能夠了。
經過這兩個步驟就能夠實現中文的顯示了。
(1.網上說ttf字體文件也是能夠的,但是我從windows的字體文件夾中拷貝一個測試了一下,沒法顯示中文;
2.網上不少提到qpf文件是最佳中文字體顯示選擇,Qt默認提供了unifont_160_50.qpf中文字體文件,但是我測試
了屢次都沒法顯示中文,並且我從網上下的wenquanyi的幾個qpf文件經測試也沒法顯示中文,不知道什麼緣由)
6、Qt中各類工具的使用:qvfp與makeqpf
Qt的主目錄下有一個tools文件夾,裏面提供了一些有用的工具的源代碼,能夠經過安裝好的桌面Qt開發環境編譯
生成這些工具的二進制程序。源代碼中有.pro項目文件,能夠直接打開、構建,構建好後,把對應的二進制程序
拷貝到Qt安裝目錄下的bin/文件夾下,這樣就能夠直接在終端執行這些工具了。
qvfp與makeqpf是tools裏面的兩個工具:
qvfp————提供虛擬幀緩存的實現與管理,從而使得移動Qt應用能夠在桌面環境中進行仿真式的測試。
makeqpf————qpf字體文件的生成工具,能夠轉換ttf字體文件爲qpf2格式的Qt自帶的字體文件格式。
(1).qvfp的使用
a.首先運行qvfp工具,指定相應的選項:
Usage: qvfb [-width width] [-height height] [-depth depth] [-zoom zoom][-mmap] [-nocursor]
[-qwsdisplay :id] [-x11display :id] [-skin skindirectory]
Supported depths: 1, 4, 8, 12, 15, 16, 18, 24, 32
示例:qvfp -width 640 -height 480 -depth 16,24,32 -nocursor
b.而後運行你的嵌入式Qt應用程序,運行方式和在開發板上同樣,即須要加上 -qws 選項,這樣應用才能使用qvfp
提供的虛擬幀緩存。(使用下面安裝的x86目標庫構建你的Qt應用)
>>這裏的應用程序必須是使用嵌入式的Qt庫構建的,可是要使應用能在桌面(x86)環境上運行,就必須是x86目標,
所以這裏必須編譯安裝一個x86目標的嵌入式Qt庫。過程和前面的arm目標庫安裝是基本一致的。配置以下:
(echo o ; echo yes ) | ./configure \
-prefix /home/realtimedsp/703-project/tools/qte-4.7.4-x86 \
-embedded x86 \
-depths 16,24,32 \
-qt-gfx-qvfb \
-no-gif \
-no-webkit \
-no-javascript-jit \
-no-script \
-no-xmlpatterns \
-qt-kbd-qvfb \
-qt-mouse-qvfb \
-nomake examples -nomake tools -nomake docs -nomake demos
由於要使用qvfp進行測試,因此配置選項中的:-qt-gfx-qvfb -qt-kbd-qvfb -qt-mouse-qvfb是必須的。 (2).makeqpf的使用 a.運行makeqpf工具,不用輸選項,而後出現圖形界面,選擇想要轉換的字體,指定字體大小、權重、是否斜體, 進行轉換就行了 b.界面的第二部分是各類字符集,能夠參考word中的插入->符號界面中的子集下拉表。