Tslib和Qt 4.8.4在mini2440開(kāi)發(fā)板上的移植_第1頁(yè)
Tslib和Qt 4.8.4在mini2440開(kāi)發(fā)板上的移植_第2頁(yè)
Tslib和Qt 4.8.4在mini2440開(kāi)發(fā)板上的移植_第3頁(yè)
Tslib和Qt 4.8.4在mini2440開(kāi)發(fā)板上的移植_第4頁(yè)
Tslib和Qt 4.8.4在mini2440開(kāi)發(fā)板上的移植_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Tslib和Qt 4.8.4在mini2440開(kāi)發(fā)板上的移植-Vector(2013-05-14)軟件平臺(tái)Linux:Ubuntu 9.04QT:4.8.4交叉編譯工具鏈:gcc version 3.4.1 開(kāi)發(fā)板:友善之臂mini2440tslib編譯與安裝tslib是電阻式觸摸屏用于校準(zhǔn)的一個(gè)軟件庫(kù),是一個(gè)開(kāi)源的程序,能夠?yàn)橛|摸屏驅(qū)動(dòng)獲得的采樣提供諸如濾波、去抖、校準(zhǔn)等功能,通常作為觸摸屏驅(qū)動(dòng)的適配層,為上層的應(yīng)用提供了一個(gè)統(tǒng)一的接口。因此這里先編譯安裝tslib,這樣在后面編譯Qt的時(shí)候才能打包編譯進(jìn)去。首先現(xiàn)在源文件編譯安裝過(guò)程很簡(jiǎn)單首先需要檢查一下軟件是否安裝sudo apt-get

2、 install automakesudo apt-get install autogensudo apt-get install autoconf -這三個(gè)一定要檢查,不然有可能編譯出錯(cuò)!確定以上工具都已經(jīng)安裝后,解壓安裝即可。# tar -zxvf tslib-1.4.tar.gz -因?yàn)橄旅鎝refix 指定安裝在/usr/local下,這個(gè)文件不能放在/usr/local下面!可放在其它目錄如/home.# cd tslib# ./autogen.sh#./configure -host=arm-linux ac_cv_func_malloc_0_nonnull=yes -cache-

3、file=arm-linux.cache -prefix=/usr/local/tslib# make# make install-prefix=/usr/local/tslib是指定安裝路徑,其實(shí)包括下文的安裝配置,路徑都可以不指定,默認(rèn)就是安裝到/usr/local/目錄下.如果編譯沒(méi)錯(cuò),最后正確的結(jié)果應(yīng)該是在/usr/local 下的文件夾為:tslib的開(kāi)發(fā)板移植與測(cè)試 將交叉編譯的tslib安裝到開(kāi)發(fā)板上其實(shí)就是拷貝相關(guān)的文件并添加系統(tǒng)環(huán)境變量而已,所以相對(duì)操作較為簡(jiǎn)單,主要的就是需要找對(duì)目錄就行。按照上面的操作方法,交叉編譯安裝后的文件在/usr/local/tslib目錄下,因此

4、需要拷貝的文件如下:1. /usr/local/tslib/lib文件下除去pkgconfig目錄外其他所有文件拷貝到開(kāi)發(fā)板/lib目錄下 2. /usr/local/tslib/etc下的ts.conf拷貝到開(kāi)發(fā)板的/etc下,在復(fù)制對(duì)應(yīng)目錄之前修改文件如下,也可以復(fù)制完成后修改。3. /usr/local/tslib/bin 下的所有文件拷貝到開(kāi)發(fā)板/tslib下;下面是ts.conf文件的第一行與第二行# Uncomment if you wish to use the linux input layer event interface# module_raw input去掉# modu

5、le_raw input前面的注釋?zhuān)欢ㄒ⒁庵虚g的空格也去掉,module頂格。注意:運(yùn)行./ ts_calibrate時(shí)可能會(huì)出現(xiàn)selected device is not a touchscreen I understand錯(cuò)誤,這時(shí)只需要將ts.conf文件中的module_raw h3600 的注釋符號(hào)去掉(左邊不能留空格).最后添加環(huán)境變量,通過(guò)超級(jí)終端在開(kāi)發(fā)板系統(tǒng)中添加環(huán)境變量,可以在開(kāi)發(fā)板文件系統(tǒng)的/etc/profile(nfs 掛載時(shí)是/opt/mini2440/root_nfs/etc/profile)文件里添加。export TSLIB_TSDEVICE=/dev/i

6、nput/ts0export TSLIB_CONFFILE=/etc/ts.confexport TSLIB_PLUGINDIR=/lib/tsexport TSLIB_CALIBFILE=/etc/pointercalexport TSLIB_CONSOLEDEVICE=noneexport TSLIB_FBDEVICE=/dev/fb0說(shuō)明:  TSLIB_TSDEVICE        /觸摸屏設(shè)備文件名。  TSLIB_CALIBFILE     

7、   /校準(zhǔn)的數(shù)據(jù)文件,由ts_calibrate校準(zhǔn)程序生成。 SLIB_CONFFILE        /配置文件名。  TSLIB_PLUGINDIR         /插件目錄 TSLIB_CONSOLEDEVICE        /控制臺(tái)設(shè)備文件名 TSLIB_FBDEVICE     &

8、#160;  /設(shè)備名以上環(huán)境變量在實(shí)際開(kāi)發(fā)中的實(shí)際配置可以根據(jù)實(shí)際情況決定。而這些指定的設(shè)備節(jié)點(diǎn)一定要和你的開(kāi)發(fā)板上的/dev目錄下的設(shè)備節(jié)點(diǎn)相對(duì)應(yīng)。最后運(yùn)行測(cè)驗(yàn)程序ts_calibrate 進(jìn)行校驗(yàn) ts_test      進(jìn)行測(cè)試QT 的交叉編譯與安裝和PC平臺(tái)下的編譯類(lèi)似,通過(guò)運(yùn)行./configure進(jìn)行配置生成makefile文件,然后編譯安裝,只是因?yàn)槭轻槍?duì)嵌入式平臺(tái)需要進(jìn)行一些針對(duì)性配置,這里生成一個(gè)自動(dòng)配置文件,可以通過(guò)修改文件來(lái)方便的更改配置。# cd qt-everywhere-opensource-src-4

9、.8.4 (/downloads)#sudo gedit autoconfig.sh加入以下內(nèi)容保存.#!/bin/sh./configure -force-pkg-config -prefix /usr/local/qte-arm -opensource -confirm-license -release -shared -embedded arm -xplatform qws/linux-arm-g+ -depths 16,18,24 -fast -optimized-qmake -qt-sql-sqlite -qt-libjpeg -qt-zlib

10、 -qt-libpng -qt-freetype -little-endian -host-little-endian -no-qt3support -no-libtiff -no-libmng -no-opengl -no-mmx -no-sse -no-sse2 -no-3dnow -no-openssl -no-webkit -no-qvfb -no-phonon -no-nis -no-opengl -no-cups -no-glib -no-xcursor -no-xfixes -no-xrandr -no-xrender -no-separate-debug-info -nomak

11、e examples -nomake tools -nomake docs -qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib-D_ARM_ARCH_5TEJ_exit如果需要指定安裝路徑可以在開(kāi)始加入-prefix=/usr/local/qte-arm -網(wǎng)上有說(shuō)這個(gè)文件夾名不能更改,否則編譯會(huì)出錯(cuò)!-embedded arm: 表示將編譯針對(duì) arm 平臺(tái)的 embedded 版本; -xplatform qws/linux-arm-g+: 表示使用 arm-linux 交叉編譯器進(jìn)行編譯; -qt-mouse

12、-tslib: 表示將使用 tslib 來(lái)驅(qū)動(dòng)觸摸屏;注意:-pch -這個(gè)必須注釋掉,不然編譯出錯(cuò)!-D_ARM_ARCH_5TEJ_ 項(xiàng)對(duì)于4.7.0 Qt 必須加上,不然編譯會(huì)報(bào)如下錯(cuò)誤:In file included from ./config.h:26,from ./JavaScriptCore/pcre/pcre_compile.cpp:44:./JavaScriptCore/wtf/Platform.h:338:6: #error "Not supported ARM 

13、architecture"對(duì)于4.8.4,這個(gè)應(yīng)該沒(méi)有影響.cd /usr/local/qt-everywhere-opensource-src-4.8.4/mkspecs/qws/linux-arm-g+修改qmake.conf如下:# qmake configuration for building with arm-linux-g+#include(././common/linux.conf)include(././common/gcc-base-unix.conf)include(././common/g+-unix.conf)include(././common/qws.c

14、onf)QMAKE_INCDIR+=/opt/mini2440/root_nfs/tslib/includeQMAKE_LIBDIR+=/opt/mini2440/root_nfs/lib# modifications to g+.confQMAKE_CC = /usr/local/arm/3.4.1/bin/arm-linux-gcc -ltsQMAKE_CXX = /usr/local/arm/3.4.1/bin/arm-linux-g+ -ltsQMAKE_LINK = /usr/local/arm/3.4.1/bin/arm-linux-g+ -ltsQMAKE_LINK_SHLIB

15、= /usr/local/arm/3.4.1/bin/arm-linux-g+ -lts# modifications to linux.confQMAKE_AR = /usr/local/arm/3.4.1/bin/arm-linux-ar cqsQMAKE_OBJCOPY = /usr/local/arm/3.4.1/bin/arm-linux-objcopyQMAKE_STRIP = /usr/local/arm/3.4.1/bin/arm-linux-stripload(qt_config)Note: QMAKE_INCDIR+=/opt/mini2440/root_nfs/tslib

16、/includeQMAKE_LIBDIR+=/opt/mini2440/root_nfs/lib這兩行必須放在”include”語(yǔ)句后面,而且QMAKE_INCDIR和QMAKE_LIBDIR是指向的開(kāi)發(fā)板共享的路徑,而不是存放在本機(jī)中的路徑,因?yàn)檫@里面有tslib 觸摸屏測(cè)試,不然肯定configure 不過(guò)去!運(yùn)行./autoconfig.sh 生成makefile文件,生成成功最后會(huì)輸出如下信息Qt is now configured for building. Just run 'make'.Once everything is built, you must run

17、'make install'.Qt will be installed into /usr/local/Trolltech/QtEmbedded-4.8.4-armTo reconfigure, run 'make confclean' and 'configure'.接下來(lái)執(zhí)行make,make過(guò)程中會(huì)出現(xiàn)一些錯(cuò)誤,有些是程序本身的一些bug,比較典型的有:(1) ././include/QtCore/././src/corelib/arch/qatomic_armv5.h:236: error: count' was not decl

18、ared in this scope修復(fù):/src/corelib/arch/qatomic_armv5.h發(fā)現(xiàn)原來(lái)是漏了一句 int count = 0;分別在236和373所在的函數(shù)定義處補(bǔ)上.(2)obj/release-shared-emb-mips/qthread_unix.o: In function set_thread_data(QThreadData*)':  qthread_unix.cpp.text+0xec): undefined reference to _tl

19、s_get_addr' 修復(fù):關(guān)掉該宏后再編譯#if defined(Q_OS_LINUX) && defined(_GLIBC_) && (defined(Q_CC_GNU) | defined(Q_CC_INTEL) /#define HAVE_TLS(3) standard input: Assembler messages: standard input:778: Error: register or shift expression expected - orr r3,r2,lsl#16'修復(fù):sudo gedit /src/

20、3rdparty/freetype/include/freetype/config/ftconfig.hLine 330. change"orr %0, %2, lsl #16nt" /* %0 |= %2 << 16 */ to "orr %0, %0, %2, lsl #16nt" /* %0 |= %2 << 16 */(4) lib/libQtGui.so: undefined reference to ts_read_raw'解決辦法:'修改qt-everywhere-opensource-src-4.7

21、.2/mkspecs/qws/linux-arm-g+/qmake.conf 文件(添加lts參數(shù)):QMAKE_CC                = arm-linux-gcc -ltsQMAKE_CXX               = arm-linux-g+ -ltsQMAKE_LINK              = arm-linux-g+ -ltsQMAKE_LIN

22、K_SHLIB        = arm-linux-g+ -lts最后make install安裝,安裝完成后可以在安裝目錄/usr/local/qte-arm 下查看對(duì)應(yīng)文件,如下圖:提醒:對(duì)4.8.4中的代碼修改后最好重新打包,以方便以后使用.開(kāi)發(fā)板配置 在開(kāi)發(fā)板上的使用其實(shí)很簡(jiǎn)單,只需要拷貝相應(yīng)的庫(kù)文件并設(shè)置環(huán)境變量即可,拷貝的方法按照個(gè)人喜好,我是掛載nfs來(lái)實(shí)現(xiàn)拷貝。cp rf /usr/local/qte-arm /opt/mini2440/root_nfs/ 設(shè)置環(huán)境變量:sudo gedit /opt/mini2440/root_nfs

23、/etc/profile# Ash profile # vim: syntax=sh# No core files by defaultulimit -S -c 0 > /dev/null 2>&1USER="id -un"LOGNAME=$USERPS1='uh W# 'PATH=$PATHHOSTNAME=/bin/hostname#export USER LOGNAME PS1 PATH# tslib pathexport TSLIB_TSDEVICE=/dev/input/ts0export TSLIB_CONFFILE=/etc/ts.confexport TSLIB_PLUGINDIR=/lib/tsexport TSLIB_CALIBFILE=/etc/pointercalexport TSLIB_CON

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論