开发板上的qt程序要使用触屏的,使用前要进行校正,
1. 移植tslib(触摸屏校正)
2. Qt/E-4.5.3在ARM上的移植
3. Qtopa4.2.4手机平台在ARM上的移植
一、移植tslib
tslib是一个开源的触摸屏支持库,它是handhelds.org上开发的,作者是Russul King,Douglas Lowder和Chris Larson。它给上层的应用程序, 为不同的触摸屏提供了一个统一的接口。它提供诸如滤波、去抖、校准之类的功能。
qt本身自带了一个触摸屏校正程序,但是他的校正效果不好,所以我们使用tslib
tslib-1.4 移植手册
tslib 版本:
tslib-1.4
交叉编译器版本:
arm-linux-gcc 4.1.2
操作系统平台:
Linux -- Red Hat 9.0
开发板平台:
Arm -- S3C2440
开始移植:
1、下载tslib1.4源码包,解压
进入tslib目录,执行
#./autogen.sh
出现错误:
configure.ac:57: error: possibly undefined macro: AS_HELP_STRING If this token and others are legitimate, please use m4_pattern_allow. See the Autoconf documentation. autoreconf: /usr/bin/autoconf failed with exit status: 1
可能是因为系统自带的autoconf工具里面没有定义这个宏,查看一下autoconf的版本
#autoconf –V 是2.57版的,
那么就从网上下一个比这个新一点的版本在
http://download.chinaunix.net/download/0001000/648.shtml找到了2.64版 下载完后,
2、进入autoconf目录,执行
#./configure
又出现错误:
checking for GNU M4 that supports accurate traces... configure: error: no acceptable m4 could be found in $PATH. GNU M4 1.4.6 or later is required;1.4.13 is recommended
原因是安装autoconf工具,需要GNU的m4工具,但是系统里没有这个工具,所以还要下载。在http://ftp.gnu.org/gnu/m4/找到m4-1.14.13.tar.bz2 下载完后,
3、进入m4-1.14.13目录,执行
#./configure
#make
#make install
安装完成后,再进入autoconf目录,执行
#./configure
#make
#make install
新安装的autoconf工具就把/usr/bin下的可执行程序覆盖了,然后执行
#./autoconf.sh (若不重新执行这句可能会出错)
#source /etc/profile
使环境变量生效,再查看 autoconf版本,确保是2.64版
进入tslib目录,执行
#./configure --prefix=/home/zy/mytslib --host=arm-linux --target=arm-linux
注释:此处mytslib是安装目录,若为源目录tslib则会出现如下错误
在make install时出现如下错误: root@localhost tslib# make install Making install in etc make[1]: 正在进入目录 `/home/arm/tslib/etc' make[2]: 正在进入目录 `/home/arm/tslib/etc' test -z "/home/zy/tslib/etc" || /bin/mkdir -p "/home/zy/tslib/etc" /usr/bin/install -c -m 644 'ts.conf' '/home/zy/tslib/etc/ts.conf' /usr/bin/install: “ts.conf” 和 “/home/arm/tslib/etc/ts.conf” 为同一文件 make[2]: *** [install-sysconfDATA] 错误 1 make[2]:正在离开目录 `/home/arm/tslib/etc' make[1]: *** [install-am] 错误 2 make[1]:正在离开目录 `/home/arm/tslib/etc' make: *** [install-recursive] 错误 1 安装目录出了问题,在配置的时候将--prefix=现在的TSLIB安装文件目录了,这样安装的时候就要覆盖目录,权限不够或者不允许,应该给出另外一个目录就可以了
#make
这时会出现一个错误:
ts_test.o: In function `main': ts_test.c:(.text+0x208): undefined reference to `rpl_malloc' fbutils.o: In function `open_framebuffer': fbutils.c:(.text+0x598): undefined reference to `rpl_malloc'
查看一下源码,发现是ac_cv_func_malloc_0_nonnull引起了,那我们需要建一个cache文件,来欺骗configure,让它不检查这一项
执行
#echo "ac_cv_func_malloc_0_nonnull=yes" > mytslib.cache
再执行
#./configure --prefix=/home/zy/mytslib --host=arm-linux --target=arm-linux --cache-file=mytslib.cache
#make
#make install
这一步很重要:
安装完成后,把 mytslib 目录下的所有内容拷贝到根文件系统(我们所制)的/usr/local/tslib目录下,修改mytslib/etc/ts.conf文件,将第二行module_raw input 的注释去掉(该语句前面不能有空格,否则后面会出现Segmentation fault错误)。
将 mytslib/bin/ts_calibrate 拷贝到/usr/bin 下,这个就是触摸屏校正程序,运行时,屏幕上会依次出现5个点,点击后会在/etc/目录下生成pointercal文件,qtopia就会根据这个文件进行校正。
转自http://zhouyang340.blog.163.com/blog/static/30240959201233010564749/