Chinaunix首页 | 论坛 | 博客
  • 博客访问: 121734
  • 博文数量: 22
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 284
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-16 11:37
个人简介

不是一个称职的程序员……

文章分类

全部博文(22)

文章存档

2014年(15)

2013年(7)

我的朋友

分类: C/C++

2014-01-12 00:09:22

参考:
交叉编译的qte-4.7.0源码的两种目的:(1)在开发板上搭建qt环境(2)作为在主机上交叉编译qt程序的库文件。至于在主机上搭建qt环境可以采用一键安装的安装包,没必要这么费劲。

一、tslib移植
tslib背景:
在采用触摸屏的移动终端中,触摸屏性能的调试是个重要问题之一,因为电磁噪声的缘故,触摸屏容易存在点击不准确、有抖动等问题。
Tslib是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。

下载tslib源码版本为tslib-1.4.tar.gz
1.准备工作
确保以下软件已安装
# apt-get install autoconf
# apt-get install automake
# apt-get install libtool
2.解压源码
解压源代码tslib-1.4.tar.gz,并进入源代码文件夹
# tar -zxvf tslib-1.4.tar.gz
# cd tslib
3.配置
# ./autogen.sh # echo "ac_cv_func_malloc_0_nonnull=yes" >arm-none-linux-gnueabi.cache
# ./configure --host=arm-none-linux-gnueabi  --cache-file=arm-none-linux-gnueabi.cache --enable-inputapi=no  --prefix=/usr/local/tslib
注意,prefix选项更换为你的安装路径。
4.编译
# make
5.安装
# make install 编译生成的库,头文件等都拷贝至prefix制定的路径中。

编译并安装后会在/usr/local/tslib生成bin,etc,include,lib四个文件夹。

bin文件夹下是tslib的测试程序,把它们复制到开发文件系统下的/bin或者/usr/local/bin下,除了ts_calibrate触摸屏校准程序外,其他几个测试程序可有可无。

etc文件夹内只有一个文件ts.conf,把它复制到目标板文件系统下的/etc目录,修改/etc/ts.conf配置如下:

module_raw input  (注意把这句前的注释符#删除)
module pthres pmin=1
module variance delta=30
module dejitter delta=100
module linear

include文件夹包含有关tslib的头文件tslib.h,不需要复制到目标板。

lib文件夹下是tslib的动态库的在目标板文件系统/usr/local/下新建文件夹tslib,把lib文件夹下的所有文件都复制过去。

在你目标板的/etc/profile文件里添加运行tslib的环境变量

export TSLIB_TSDEVICE=/dev/input/event0 (目标板触摸屏设备节点文件)

export TSLIB_CONFFILE=/etc/ts.conf 

export TSLIB_PLUGINDIR=/usr/local/tslib/ts

export TSLIB_CALIBFILE=/etc/pointercal (触摸屏校准信息文件)

export LD_LIBRARY_PATH=/usr/local/tslib/:$LD_LIBRARY_PATH

以上是我在自己目标板添加的环境变量,可以正常运行,参考网友环境变量配置如下(这个环境变量多一些,比较全面,做下记录):

export TSLIB_ROOT=/usr/local
export TSLIB_TSDEVICE=/dev/event0 (目标板触摸屏设备节点文件)
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib(这句我注释掉的原因是:有一种说法是使用 LD_LIBRARY_PATH这样设置不安全,我的做法是把路径添加到/etc/ld.so.conf文件中,然后执行ldconfig命令,这样就可以了。ldconfig在你的交叉编译工具里就有)

修改/etc/profile后,执行:#source /etc/profile使刚配置的环境变量生效。

运行触摸屏校准程序ts_calibrate,会自动生成文件/etc/pointercal来保存校准信息。到此tslib移植工作完成!

 

二、编译qte-4.7.0
1、下载源码并解压qt-everywhere-opensource-src-4.7.0
2、配置源码:
 ./configure -opensource -embedded arm -xplatform qws/linux-arm-g++  -no-webkit -qt-libtiff -qt-libmng  -qt-mouse-tslib -qt-mouse-pc -no-mouse-linuxtp -no-neon -I/usr/local/tslib/include -L/usr/local/tslib/lib
3、make
4、make install
一两个小时安装完后,这地自动生成 /usr/local/Trolltech目录,这是qt-everywhere-opensource-src-4.7.0安装后所在的目录。以后编译开发板上运行的qt程序,只需调用该目录下的库文件便可。
5、将主机/usr/local/Trolltech目录的内容拷贝到开发板相应目录,例如和主机一样/usr/local/Trolltech
6、设置环境变量,编写一个脚本文件

  vi setenvQtarm.sh

  添加如下内容:

  PATH=/usr/local/Trolltech/QtEmbedded-4.5.0-arm/bin:$PATH

  QTDIR=/usr/local/Trolltech/QtEmbedded-4.5.0-arm

  QTDEDIR=$QTDIR

  MANPATH=$QTDIR/man:$MANPATH

  LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

  export PATH QTDIR MANPATH LD_LIBRARY_PATH

  我们在运行的时候运行对应的脚本即可
   #source setenvQtarm.sh

  然后就可以用qmake designer等工具了.

  注:在端口执行有效,如果运行source setenv 再打开另端口.那样就会出错.
 如果编译QT程序,记得先运行相应脚本,即可用相应的QT平台编译QT程序。


 

阅读(1641) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~