自己一个人学习摸索,真不是件容易的事,为了能够在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都不需要安装(可能已经安装好了)