不是一个称职的程序员……
分类: C/C++
2014-01-11 23:46:26
当编译与安装qt-embedded-linux-opensource-src-xx (注:xx为版本号)时出现以下错误:
The tslib 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-xx/mkspecs/qws/linux-arm-g++.
解决方法:
1、你应该在/../qt-embedded-linux-opensource-src-xx/mkspecs/qws/linux-arm-g++.这个文件夹下面的qmake文件中进行添加QMAKE_INCDIR=/usr/local/tslib/include/
QMAKE_LIBDIR=/usr/local/tslib/lib/
其中/usr/local/tslib/为tslib的安装目录,根据自己实际情况修改
2、修改qt-everywhere-opensource-src-xx/mkspecs/qws/linux-arm-g++/qmake.conf 文件(添加lts参数):
QMAKE_CC = arm-linux-gcc -lts
QMAKE_CXX = arm-linux-g++ -lts
QMAKE_LINK = arm-linux-g++ -lts
QMAKE_LINK_SHLIB = arm-linux-g++ -lts
注意这里的arm-linux-xxxx是相应的交叉工具链,我们需要提前配置好相应工具链的环境变量,本人建议使用工具链的绝对路径,这样才能准确无误的识别该工具链。
然后执行make 和make install即可
关于制定tslib的路径问题,如果以上方法行不通,可以试着在配置是制定相应路径,例如:
#./configure –prefix=/usr/local/Trolltech/QtEmbedded-4.5.0-arm -arch arm -embedded arm -qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib 参数我们可以增添删补,来实现不同的功能。
期间遇到好多问题,参考了一些列文章
其实有两个方法,能让我们更深入一点看到我们我们这些错误从何而来,从而帮助我们去自己解决问题。
1。 在./configure 的选项里加上 -verbose选项,出错信息会更丰富,而不是没头没脑的来一句测试失败了,从这里我找到了我的问题,打印出了不识别我的交叉工具链,所以我指定了工具链的绝对路径,编译搞通了。
2。 还有个方法就是根据提示的出错信息,去$QTDIR/config.test目录下去找对应的测试例子,因为单独编译,这样你就把问题大大的缩小了,找到问题的概率也变大了。
有朋友碰到“The tslib functionality test failed!”的问题,最后通过测试config.test/unix/tslib目录下的小例子(这些小例子正是./configure会调用测试, 给出正确或出错信息的。)最后发现是版本不兼容的原因。
其实还有一个方法,去读./configure文件,这才是真正的万能钥匙。 刚开始你可能漫无头绪,其实加些打印(如果是bash写的,就用echo;如果是perl写的,就用print),过一阵之后,你会发现自己几乎解决绝大部分问题。