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了。到此我心里的大石头终于落地了,小弟菜鸟一枚,如有错误欢迎指正,一起讨论。


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