The tslib functionality test failed錯誤解決辦法總結


  最近在編譯安裝qt-everywhere-4.7.4,在配置tslib的時候總是出現錯誤。經過思考和百度,終於找到了解決方法。

        我的安裝環境是:

                                      使用系統:ubuntu 14.04

                                      編譯器:   arm-linux-gcc 4.3.2  目錄在/usr/local/arm/4.3.2/

                                      tslib版本:tslib-1.4    目錄在/home/hero/work/tslib-1.4

                                      qt版本: qt-everywhere-4.7.4 目錄在/home/hero/work/qtarm-build

        首先編譯安裝tslib,進入到tslib-1.4的目錄,執行./autogen-clean.sh做一下清理,之後執行./autogen.sh生成相關文件。

然後echo  "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache;

之後執行./configure  --host=arm-linux  --prefix=/home/hero/work/tslib  --cache-file=arm-linux.cache

接下來就是make和make install

最後修改安裝目錄下/etc/ts.conf文件,例如我的路徑就是 vi /home/hero/work/tslib/etc/ts.conf。將第二行

<span style="font-family: 'Liberation Mono', monospace; font-size: 18px;"><span lang="en-US">module_rawinput前面的井號“#”和空格刪除,注意,前面一定定格。最後改完的結果是有如下配置

</span></span><pre class="cjk" name="code" style="white-space: pre-wrap; word-wrap: break-word;"><span style="font-family: 'Liberation Mono', monospace;"><span lang="en-US">module_rawinput</span></span>
<span style="font-family: 'Liberation Mono', monospace;"><span lang="en-US">modulepthres pmin=1</span></span>
<span style="font-family: 'Liberation Mono', monospace;"><span lang="en-US">modulevariance delta=30</span></span>
<span style="font-family: 'Liberation Mono', monospace;"><span lang="en-US">moduledejitter delta=100</span></span>
<span style="font-family: 'Liberation Mono', monospace;"><span lang="en-US">modulelinear</span></span>


說明:

         1、如果不添加echo"ac_cv_func_malloc_0 _nonnull=yes">arm-linux.cache會報錯:

            ts_test.o: In function `main':

            ts_test.c:(.text+0x1d8): undefinedreference to `rpl_malloc'
            
            fbutils.o: In function`open_framebuffer':

            fbutils.c:(.text+0xa20): undefinedreference to `rpl_malloc'

            2、--prefix項是指定tslib的安裝路徑,在make  install之前要手動創建相關文件夾,例如我的安裝路徑中,tslib

目錄就是我自己創建出來的。

到此tslib就安裝結束了。

           下一步是配置安裝qt4.7.4。關於配置選項我自己也沒弄的太懂,不過編譯後的程序可以在arm上面運行。具體

的配置選項以後有時間慢慢研究吧。進入正題:

           解壓什麼的我就不說了。不解壓也就談不上配置了。

          進入qt4.7.4目錄,我的文件加/home/hero/work/qtarm-build。進入qtarm-build目錄以後我創建了一個腳本文件build.sh,如下

[html] view plain copy
 print?
  1. <span style="font-size:18px;">./configure --prefix=/home/hero/work/qt-arm \  
  2. -embedded arm \  
  3. -release \  
  4. -opensource \  
  5. -fast \  
  6. -no-accessibility \  
  7. -no-scripttools \  
  8. -no-mmx \  
  9. -no-multimedia \  
  10. -no-svg \  
  11. -no-webkit \  
  12. -no-3dnow \  
  13. -no-sse \  
  14. -no-sse2 \  
  15. -silent \  
  16. -qt-libpng \  
  17. -qt-libjpeg \  
  18. -no-libtiff \  
  19. -no-multimedia \  
  20. -make libs \  
  21. -nomake tools \  
  22. -nomake examples \  
  23. -nomake docs \  
  24. -nomake demo \  
  25. -no-nis \  
  26. -no-cups \  
  27. -no-iconv \  
  28. -no-dbus \  
  29. -no-openssl \  
  30. -xplatform qws/linux-arm-g++ \  
  31. -little-endian \  
  32. -qt-freetype \  
  33. -depths 4,8,16,32 \  
  34. -no-glib \  
  35. -qt-mouse-tslib -I<span style="color:#FF0000;">/home/hero/work/tslib/include</span> -L<span style="color:#FF0000;">/home/hero/work/tslib/lib</span> </span>  

        紅色部分是tslib的安裝路徑,這個必須和tslib安裝路徑一樣,不然會提示配置錯誤:

       The tslib functionality test failed!

       You might need to modify the include and library search paths by editing

        QMAKE_INCDIR and QMAKE_LIBDIR in

          /home/hero/work/qtarm-build/mkspecs/qws/linux-arm-g++.




        在qtarm-build目錄下更改mkspecs/qws/linux-arm-g++/qmake.conf文件。

[html] view plain copy
 print?
  1. <span style="font-size:18px;">#  
  2. # qmake configuration for building with arm-linux-g++  
  3. #  
  4.   
  5. include(../../common/g++.conf)  
  6. include(../../common/linux.conf)  
  7. include(../../common/qws.conf)  
  8.   
  9. # modifications to g++.conf  
  10. QMAKE_CC                = <span style="color:#3366FF;">/usr/local/arm/4.3.2/bin/</span>arm-linux-gcc <span style="color:#FF0000;">-lts</span>   
  11. QMAKE_CXX               = <span style="color:#3333FF;">/usr/local/arm/4.3.2/bin/</span>arm-linux-g++ <span style="color:#FF0000;">-lts</span>  
  12. QMAKE_LINK              = <span style="color:#3333FF;">/usr/local/arm/4.3.2/bin/</span>arm-linux-g++ <span style="color:#FF0000;">-lts</span>  
  13. QMAKE_LINK_SHLIB        = <span style="color:#6600CC;">/usr/local/arm/4.3.2/bin/</span>arm-linux-g++ <span style="color:#FF0000;">-lts</span>  
  14.   
  15. # modifications to linux.conf  
  16. QMAKE_AR                = <span style="color:#3333FF;">/usr/local/arm/4.3.2/bin/</span>arm-linux-ar cqs  
  17. QMAKE_OBJCOPY           = <span style="color:#000099;">/usr/local/arm/4.3.2/bin/</span>arm-linux-objcopy  
  18. QMAKE_STRIP             = <span style="color:#3333FF;">/usr/local/arm/4.3.2/bin/</span>arm-linux-strip  
  19.   
  20. load(qt_config)</span>  

        紅色部分是需要重新添加的,注意前面有空格,藍色部分是因爲我自己的環境變量設置的有問題,所以添加了

絕對路徑,如果環境變量設置的沒問題,可以不用添加。

        然後就是到qtarm-build目錄運行之前創建的腳本文件。執行./build.sh,出現提示,輸入yes開始配置。如果qt4.7.4

是從官方網站下載的,應該可以正確配置。如果是經過別人修改過的,有可能還是提示:

The tslib functionality test failed!

You might need to modify the include and library search paths by editing

QMAKE_INCDIR and QMAKE_LIBDIR in

/home/Raymond/qt-embedded-arm-tslib/mkspecs/qws/linux-arm-g++.

        我就是後者,折騰了我很久,才找到解決辦法,網上有人說是找不到arm-linux-gcc也會報這樣的錯誤,那就按照我上面的藍色自體部分,添加編譯器的絕對路徑。如果是其實是你安裝的tslib位置,和你在腳本文件中配置的不一樣,那請自行更改。最坑人的是,這兩個都不是,而是出現在config.test這個文件夾下面。如果這個qt曾經被編譯過,就可能出現這個問題。你可以去到config.test/unix/tslib目錄下,查看一下里面的Makefile文件,看看裏面的關於tslib的路徑是不是你自己的安裝路徑。如果不是,直接在這裏更改即可,然後在回到qtarm-build目錄。重新配置,即可通過。


         我也試過先去掉關於tslib的選項,可以配置過去,這時會提示你可以執行make confclean來清除之前的配置項,我弱弱的以爲,這就可以清除所有的配置項。很傻很天真啊。這樣qt應該就可以正確無誤的配置過去了。

         然後就是make 和 make install了。到此我心裏的大石頭終於落地了,小弟菜鳥一枚,如有錯誤歡迎指正,一起討論。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章