QT在ARM平台的移植(一)

开发板上的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/

你可能感兴趣的:(qt,移植)