呼呼,在寫這篇之前,上網看到....Qt 公司在三月3號發佈了 4.5版...哇咧,吐血~~我昨天編touch功能是三月6號..嗚嗚,delay了四天才知道,囧 了~
不過,我也抓下來編譯完成了,編譯方法其實大同小異,很快就成功並加入了觸控功能了!
============================================================
QT-Embedded 加入觸控功能
因為Qt要有觸控功能必須以tslib的lib和include兩個檔案為依據,才能讓編譯出來的Qt具有觸控的功能,因此分為兩個部分作:
1、編譯tslib觸控套件
2、編譯Qt
作業環境:Ubuntu 8.10
一、編譯tslib
套件名稱:tslib-1.0.tar.bz2
1先切換到工作資料夾下,下載此檔
指令$ wget http://prdownload.berlios.de/tslib/tslib-1.0.tar.bz2
2下載完成後,解壓縮檔案
指令$ tar jxvf tslib-1.0.tar.bz2
3解壓縮完成後,會出現tslib-1.0的資料夾,切換至資料夾底下
指令$ cd tslib-1.0
4在編譯tslib之前,需先安裝automake、libtool兩個套件。
指令$sudo apt-get install automake libtool
5執行autogen.sh
指令$ ./autogen.sh
指令執行完成後,會產生 configure 檔,以便用於組態tslib
6組態tslib
指令$ ./configure -prefix=/home/maxron/workSpace/tslib/ CC=arm-unknown-linux-gnueabi-gcc CXX=arm-unknown-linux-gnueabi-g++ -host=arm-linux ac_cv_func_malloc_0_nonnull=yes
註1:
-prefix=/home/maxron/workSpace/tslib/ 這行參數是當你編譯完成後,使用make install安裝的路徑,所以當我編譯完成,利用 make install 它便會安裝至/home/maxron/workSpace/tslib/ 資料夾中。
註2:
ac_cv_func_malloc_0_nonnull=yes 若無此指令而做組態的話,會出現rpl_malloc未定義的錯誤,解法有兩種:
(1)將configure.ac內的AC_FUNC_MALLOC註解掉,然後重新執行autogen.sh產生新的configure,之後再重新進行configure
指令
(2)在執行configure時,設定環境變數ac_cv_func_malloc_0_nonnull=yes
因此,我採用第二種方法,在組態時加入ac_cv_func_malloc_0_nonnull=yes參數
7 組態完成後,沒出現錯誤,便可以開始編譯了,為了避免出現錯誤,先切換到root
指令$ su
之後輸入密碼。切換至root模式後,就可以下make指令了
指令$ make
8編譯完成後,安裝tslib
指令$ make install
再剛剛的組態時,便指定了安裝路徑,因為檔案將會安裝到/home/maxron/workSpace/底下,而資料夾名稱為tslib/,切換至裡面看的話,會有bin、etc、include、lib四個子資料夾。其中lib、include這兩個資料夾,將是用來編譯Qt 觸控功能的lib。
二、編譯Qt
1編譯Qt的話,可參考上一篇,步驟大致無上差別,只需在做Qt 的 configure 時,需加入參數。
指令$ ./configure -embedded arm -qt-zlib -qt-libpng -qt-gif -qt-libtiff -qt-libmng -qt-libjpeg -qt-freetype -no-openssl -qt-mouse-tslib -L /home/maxron/workSpace/tslib/lib -I /home/maxron/workSpace/tslib/include
用-L參數指定lib、-I參數指定include。
2,再來的步驟,就請參考Qt的編譯了!當編譯完成後,一樣移到開發版於本機上掛載的根檔案系統下。路徑為/data/target/usr/local/。
將編譯好的Trolltech資料夾,移至/data/target/usr/local/底下。之後,設定環境變數。
指令
$
export QTDIR=/usr/local/Trolltech/QtEmbedded-4.4.3-arm
$ export
PATH=$QTDIR/bin:$PATH
$ export
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
$ export QWS_MOUSE_PROTO="tslib"
環境變數設定完成後,執行Qt的範例程式。測試是否具有觸控功能了!