arm平台tslib的編譯與qte原始碼包配置中的-qt-mouse-tslib

來源:互聯網
上載者:User

     自己一個人學習摸索,真不是件容易的事,為了能夠在qt-embedded-linux-opensource-src-4.5.3裡配置-qt-mouse-tslib不出問題,我可是足足折騰了三天,以下我將自己的工作成果貼出,與大家共用:

一、下載tslib-1.4.tar,編譯

     1. 當然以下內容是參考網路其它文章的,安裝前有三個相關軟體:autoconf,automake,libtool.在自己系統安裝光碟片裡,用這些關鍵字搜尋,安裝相應的軟體包,不要擔心,已經安裝過了,如果安裝了,會提示你的。

     2.我一般會在/home目錄下建一個myfile的目錄,將自己解壓檔案放在裡面:cd /home/myfile    tar  xvf (tslib-1.4放的目錄)/tslib-1.4.tar

     3.cd tslib-1.4

     4.這一步很重要:export CC=.... ,export CXX=...,一般CC=arm-linux-gcc ,CXX=arm-linux-g++但也不是全部。比如我用的周立功的smartarm3250,上面的交叉編譯工具是arm-vfp-linux-gnu-gcc,arm-vfp-linux-gnu-g++所以我的應該這麼寫:export CC=arm-vfp-linux-gnu-gcc,export CXX=arm-vfp-linux-gnu-g++

關於第4步我想多說一點,再進行第4步之前,你要在你的/etc/profile裡,或是.bash_profile裡,添加交叉編譯工具路徑:export PATH=$PATH:/opt/nxp/.../bin(你的交叉編譯工具路徑),然後用source profile或source .bash_profile使你的設定生效。

             還有一步:export PATH=$PATH:/opt/nxp/gcc-4.3.2-glibc/bin(增加的是編譯器的路徑),不然的話會出現cannot create excutable files什麼的,這可是血的教訓,浪費了我兩天功夫啊。

     5.    ./autogen.sh

     6.   ./configure --prefix=/usr/local/tslib --host=arm-vfp-linux-gnu av_cv_func_malloc_0_nonnull=yes

--prefix後面是你指定的安裝路徑

     7.     make

     8.     make install

進行完以上工作之後,你要進入/usr/local/tslib/bin目錄用file命令驗證一下:file+要驗證的檔案名稱。比如要驗證a.txt,即file a.txt。注意如果檔案資訊裡,ELF檔案資訊後面有arm這個詞,如果是80386,說明,你用的編譯器不是交叉編譯器,而是系統的gcc,g++。

二、arm平台配置qt-embedded-linux-opensource-src-4.5.3

   進入解壓目錄後./configure ...-qt-mouse-tslib...其它的編譯選項,我就不說了,一般不會出什麼問題。-qt-mouse-tslib這個選項是專門針對觸控螢幕的。有相當多一部人會出這樣一個問題:Thetslib functionality test failed!You might need to modify the include and library
search paths by editing QMAKE_INCDIR and QMAKE_LIBDIR in...

那麼你可以這樣做:在../qt-embedded-linux-opensource-src-4.5.3/mkspecs/qws/linux-arm-g++/qmake.conf檔案中加入
QMAKE_INCDIR =/usr/local/tslib/include

QMAKE_LIBDIR =/usr/local/tslib/lib
當然也可在./configure裡加入-I/=/usr/local/tslib/include -L=/usr/local/tslib/lib來解決問題,可是當你試過了以上方法後仍不奏效,怎麼辦?這也是我今天特意寫這文章的原因。

特別要提到CuteQt Blog一篇名為''qtopia/qt-extended的配置時錯誤(configure error)"的文章。上面提到,這樣的問題實際的解決辦法:在./configure選項裡加入-verbose,這樣可以比較詳細地告訴你錯誤的原因,本人也是在這樣的提示下找到最終的問題所在。文章提到的第二種方法,其實效果和加-verbose是一樣的,在此不再贅述。

 

加入-verbose選項後,我的上面提示,找不到編譯工具:arm-linux-g++.我看了.../mkspecs/qws/linux-arm-g++/qmake.conf

檔案,QMAKE_CC=arm-linux-gcc,QMAKE_CXX=arm-linux-g++.這就對了,因為我的交叉編譯工具是arm-vfp-linux-gnu-gcc,arm-vfp-linux-gnu-g++,所以改過來QMAKE_CC=arm-vfp-linux-gnu-gcc,QMAKE_CXX=arm-vfp-linux-gnu-g++

 

重新./configure一次,又出現以下問題:/opt/../ld:skipping incompatible /usr/local/tslib/lib/libts.so when searching for -lts

:/opt/../ld:cannot find -lts出現以上問題的原因很明顯,你的libts.so與./configure裡指定的平台不相容。即tslib庫檔案產生的不對,你的交叉編譯環境有問題。這也是我強調編譯tslib-1.4的原因。因為之前,我第一次編譯tslib-1.4時,沒有export CC和CXX,即產生的libts.so是80386類型庫檔案。知道真相後,我們按照上面介紹的tslib-1.4的編譯方法,重新編譯一次,然後進入qt-embedded-linux-opensource-src-4.5.3下./configure
...發現配置通過。搞定!

 

補充:有時候雖然編譯過了tslib,但是在編譯qte源碼時發現雖然指定了-I和-L但是發現qte並不認帳,無論怎麼修改都不行,這時候應該還是tslib沒有編譯正確。

網上有的網友說要安裝autoconfig automake libtool,不過我用的redhat5和redhat6都不需要安裝(可能已經安裝好了)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.