自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Qt 4.5.1觸摸屏和Sqlite 3 移植教程 下篇

移動開發(fā)
接著上篇Qt 4.5.1觸摸屏和Sqlite 3 移植教程開始介紹,基于平臺的Qt嵌入式,它是一個控制程序存儲在ROM中的嵌入式處理器控制板。

接著介紹Qt 4.5.1觸摸屏和Sqlite 3 移植教程,開始編譯。

Qt 4.5.1觸摸屏和Sqlite 3 移植教程 上篇

qt-x11-opensource-src-4.5.1就編譯安裝成功了。,你就可以使用/usr/local/Trolltech/Qt-4.5.1下的Qt進行編程開發(fā)了。

1、這里,qt-embedded有兩個復制:qt-embedded-linux-opensource-src-4.5.1-x86和qt-embedded-linux-opensource-src-4.5.1-arm,根據(jù)他們的名字可以知道前者是適合x86架構的,后者適合arm架構為什么需要兩個呢?如果有開發(fā)板的話,可以只編譯qt-embedded版本成arm架構的就可以了,但是很多時候用qvfb的話,開發(fā)會方便很多,所以多編譯一個x86架構的也不錯。這里是否有些疑問,qt-x11也是適合x86結構的,這不是和qt-embedded重復了嗎?答案是這樣的,qt-embedded版本只能在嵌入式板子上面運行,編譯成x86架構的程序也只能在x86的嵌入式板子上跑(這里咱們用的PC機其實是也可以看成嵌入式開發(fā)板只不過它是x86架構的)。

前面說過,我們需要qvfb來開發(fā),但是qvfb只能執(zhí)行x86架構的應用程序,所以需要讓qt-embedded生成關于x86的庫和其他文件。而將qt-embedded編譯成arm,又是為什么呢?道理很簡單,我最終的qt應用程序需要在arm架構上面運行,當然需要這方面的庫,所以編譯成arm也就順理成章了。好了,現(xiàn)在簡單的總結一下,首先,使用qt-x11提供的庫和開發(fā)工具開發(fā)出qt應用程序,然后使用qt-embedded關于x86庫和工具再次編譯我們開發(fā)qt應用程序,這是所得到的可執(zhí)行文件就可以在qvfb上運行了,最后,使用qt-embeddedd的arm庫再次編譯就可以得到在arm上能運行的可執(zhí)行程序。很明顯,如果有開發(fā)板,第二步是可要可不要的(最好是要),如果沒有開發(fā)板的話,第三步也就沒必要了,這樣就不需要將qt-embedded編譯成適合arm架構的。

2、編譯配置QtEmbedded-4.5.1-x86版本

解壓qt-embedded-linux-opensource-src-4.5.1.tar.bz2在路徑/root/local/qt路徑下

  1. # tar xjvf qt-embedded-linux-opensource-src-4.5.1.tar.bz2 

修改解壓后的文件夾名稱

  1. #mv qt-embedded-linux-opensource-src-4.5.1 qt-embedded-linux-opensource-src-4.5.1-x86  
  2. 進入/root/local/qt/qt-x11-opensource-src-4.5.1-x86目錄,進行編譯安裝。在終端中進行如下操作:  
  3. #cd /root/local/qt/qt-x11-opensource-src-4.5.1-x86  
  4. ./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.1-x86 -embedded x86 –qvfb  
  5. #make(或windowns系統(tǒng)下gmake)  
  6. #make install(或gmake install) 

OK,QtEmbedded-4.5.1-x86就編譯好了。

在需要x86版本QT編譯時建立環(huán)境變量:

  1. export QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.1-x86/  
  2. export PATH=/usr/local/Trolltech/QtEmbedded-4.5.1-x86/bin/:$PATH  
  3. export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.21-x86/lib/:$LD_LIBRARY_PATH 

這里也寫成腳本:

  1. #vi setX86env  
  2. #!/bin/sh  
  3. export QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.1-x86/  
  4. export PATH=/usr/local/Trolltech/QtEmbedded-4.5.1-x86/bin:$PATH  
  5. 4export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.1-x86/lib/:$LD_LI    BRARY_PATH 

記得加上執(zhí)行權限。

如果要添加觸摸屏支持還需要安裝tslib,現(xiàn)在最高版本為1.4(筆者開發(fā)時)。下面介紹一下tslib1.4編譯安裝過程。

3、編譯安裝tslib1.4

安裝編譯過程需用到的程序

  1. # apt-get install autoconf(或autoconf2.13)  
  2. # apt-get install automake  
  3. # apt-get install libtool 

將tslib1.4解壓到/home下

  1. #./autogen.sh  
  2. #./configure --prefix=/home/zyx/project/mytslib/ --host=arm-linux ac_cv_func_malloc_0_nonnull=yes 
  3.  
  4. #make  
  5. #make install-strip //生成瘦身應用程序和庫 

注意:/home/zyx/project/mytslib/為tslib1.4安裝目錄在裝QtEmbedded-4.5.1-arm版本時需要用到此目錄,打包mytslib。

  1. # tar czvf mytslib.tar.gz mytslib 

下載到開發(fā)板上/usr/local目錄解壓。

  1. #tar xzvf mytslib.tar.gz 

設置環(huán)境變量,校準觸摸屏。修改開發(fā)板上創(chuàng)建/bin/ts.sh文件。

 

  1. #!/bin/sh  
  2. export QTDIR=/usr/local/Qtembedded-4.5.1  
  3. export QPEDIR=/usr/local/Qtembedded-4.5.1  
  4. export PATH=$PATH:$QTDIR/bin  
  5. export TSLIB_ROOT=/usr/local/tslib     //tslib主目錄  
  6. export TSLIB_TSDEVICE=/dev/event0   //觸摸屏設備節(jié)點  
  7. export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf   //觸摸屏配置文件  
  8. export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts //觸摸屏在進行AD轉換時用到的插件  
  9. export TSLIB_CALIBFILE=/etc/pointercal     //生成的校驗文件存放目錄  
  10. export TSLIB_FBDEVICE=/dev/fb0         //觸摸屏framebuff設備節(jié)點  
  11. export QWS_SIZE=640x480   //根據(jù)自己觸摸屏大小進行設置,這條也可不加  
  12. export QWS_DISPLAY="LinuxFb:mmWidth100:mmHeight130:0"//如果不加這條會出現(xiàn)觸摸屏字體很小的現(xiàn)象(不管在程序中設置多大的字體)  
  13. export LD_LIBRARY_PATH=$QPEDIR/lib:$TSLIB_ROOT/lib:$LD_LIBRARY_PATH  
  14. export QWS_MOUSE_PROTO="Tslib:/dev/event0" 
  15. export TSLIB_CONSOLEDEVICE=none 
  16. export QT_QWS_FONTDIR=$QPEDIR/lib/fonts  //設置字體,否則程序顯示亂碼  
  17. export QT_PLUGIN_PATH=$QTDIR/plugins/  

#p#

注意:

(1) 上面這些設置一定要仔細寫,否則會出現(xiàn)這樣那樣的問題,筆者曾出現(xiàn)露掉字體問題??傊@個一定要根據(jù)自己的配置寫正確。

(2) 檢查ts.conf 參數(shù)是否設置正確,下面是我的配置。

  1. module_raw input  
  2. module pthres pmin=1 
  3. module variance delta=30 
  4. module dejitter delta=100 
  5. module linear 

(3) 如果是靜態(tài)添加節(jié)點的話,觸摸屏設備節(jié)點一定要建正確。

  1. #mknod ts0 c 13 128 

(4) 觸摸屏的前提是你的觸摸屏驅動已經(jīng)寫好,并加載進了內核.你可以測試有沒有加載觸摸屏驅動,cat /dev/touchscreen/0raw) ,點擊觸摸屏,看終端有無顯示,若有則表明正確。

(5) 修改文件ts.conf將其他不需要的都刪掉,空格也都刪掉,因為配置文件有大小限制(好像是不大于150k)。否則有可能會提示: selected device is not a touchscreen I understand錯誤信息

在開發(fā)板/usr/local/mytslib/bin目錄下執(zhí)行校準觸摸屏程序:# ./ts_calibrate

會在/etc目錄生成一個:pointercal觸摸屏效準的必須文件,也可以運行此目錄下的其他程序進行測試。

特別注意:如果是掛載根文件系統(tǒng),在/etc/exports文件中發(fā)布權限要設置正確,否則可能會出現(xiàn)雖然已經(jīng)校驗但卻無法生成pointercal文件。

4、編譯安裝QtEmbedded-4.5.1-arm版本

解壓qt-embedded-linux-opensource-src-4.5.1.tar.bz2(在路徑/root/local/qt路徑下),進入/root/local/qt/ qt-embedded-linux-opensource-src-4.5.1-arm目錄,進行編譯安裝。在終端中進行如下操作:

  1. # tar xjvf qt-embedded-linux-opensource-src-4.5.1.tar.bz2  
  2. #mv qt-embedded-linux-opensource-src-4.5.1 qt-embedded-linux-opensource-src-4.5.1-arm  
  3. # cd qt-embedded-linux-opensource-src-4.5.1-arm 

配置選項編譯:

  1. ./configure -release -shared -fast -no-largefile -qt-sql-sqlite -no-qt3support -no-xmlpatterns -no-mmx -no-3dnow -no-sse -no-sse2   
  2. -no-svg -no-webkit -qt-zlib -qt-gif -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg -make libs 
  3. -nomake tools -nomake examples -nomake docs -nomake demo -no-nis  
  4.  -no-cups -no-iconv -no-dbus -no-openssl -xplatform qws/linux-arm-g++ -embedded arm -little-endian -qt-freetype -depths 16,18 -qt-gfx-linuxfb   
  5. -no-gfx-transformed -no-gfx-multiscreen -no-gfx-vnc   
  6. -no-gfx-qvfb -qt-kbd-usb   
  7. -no-glib -qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib 

解釋:-fast:快速編譯,加此項不會生成中間文件,如果你確定你能一次編譯通過的話可以加上,否則重新編譯會浪費很多時間。

-qt-sql-sqlite:sqlite數(shù)據(jù)庫選項,如果要編寫的程序需要數(shù)據(jù)庫就必須加上,或者使用插件的形式,但是兩者只能選一個,否則編寫的程序會出現(xiàn)加載不上驅動的現(xiàn)象。

注意:最后兩個路徑如果設置不對則生成的庫文件沒辦法支持觸摸屏

假如提示mkspec/qws/linux-arm-g++/qmake.conf中QMAKE_INCDIR和QMAKE_LIBDIR錯誤信息

將qmake.conf文件中加入

  1. QMAKE_INCDIR =/home/zyx/project/mytslib/include  
  2. QMAKE_LIBDIR =/home/zyx/project/mytslib/lib 

重新./configure

  1. #make  
  2. #make install 

如果在編譯的過程中出錯,在重新make前需要先執(zhí)行make clean,然后再./configure,再執(zhí)行make的操作。

安裝默認目錄在/usr/local/Trolltech/QtEmbedded-4.5.1-arm中。

5、打包編譯安裝好的QtEmbedded庫文件以備以后使用

  1. # tar czvf QtEmbedded-4.5.1-arm.tar.gz QtEmbedded-4.5.1-arm 

在編譯ARM版QT應用程序前建立環(huán)境變量:

  1. export QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.1-arm/  
  2. export PATH=/usr/local/Trolltech/QtEmbedded-4.5.1-arm/bin/:$PATH  
  3. export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.1-arm/lib/:$  
  4. LD_LIBRARY_PATH 

編譯簡單的QT程序或者QtEmbedded-4.5.1-arm自帶的程序例子掛載到開發(fā)板執(zhí)行看是否成功,一般會提示找不到fonts  libQtGui.so.4  libstdc++.so.6  libQtNetwork.so.4 libQtCore.so.4 librt.so.1等庫文件。從/usr/local/trolltech/QtEmbedded-4.5.2-arm/lib 和 /usr/local/arm/3.4.5/arm-linux/lib中拷貝到開發(fā)板上即可。

小結:關于Qt 4.5.1觸摸屏和Sqlite 3 移植教程 上下篇介紹完了,還是基于Qt 嵌入式版本QtEmbedded。最后希望本文能幫你解決問題。

責任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關推薦

2011-06-17 09:19:03

Qt 4.5.1 Sqlite 移植

2009-12-10 10:25:12

Linux觸摸屏驅動

2012-05-14 15:11:23

戴爾一體機

2012-02-28 14:07:17

Android觸摸屏手勢識別

2013-01-11 10:08:43

PC操作系統(tǒng)

2012-04-10 09:09:21

2009-07-01 09:27:36

觸摸屏驅動WinCE

2010-09-02 08:46:16

蘋果觸摸屏

2011-06-30 16:08:05

Qt 字庫 QPF

2011-07-04 17:26:00

Qt SQLite

2011-06-09 15:18:07

QT 編譯

2011-10-19 15:34:13

惠普一體機

2012-07-19 09:04:29

Windows 8Office 2013

2013-11-27 15:59:21

微軟Kinect觸摸屏

2011-06-17 13:39:47

Qt 文件

2011-10-25 15:18:08

戴爾一體機

2011-11-15 11:04:14

黑莓BBX

2013-07-09 13:38:13

觸摸屏用戶體驗UI設計

2011-07-12 10:10:58

2009-09-03 16:17:45

點贊
收藏

51CTO技術棧公眾號