tslib全称应该是Touch Screen Library,也就是专门针对触摸屏创建的开源库,tslib的最新工程的github地址为:https://github.com/libts/tslib,感谢牛人的开源工程,clone下来,进入源码目录编辑一个脚本文件 ts-build:

#!/bin/bash

./autogen.sh    #自动生成Makefile

./configure \
		CC=/your-compiler-dir/arm-linux-gnueabi-gcc \    #设置交叉编译器的地址
		CXX=/your-compiler-dir/arm-linux-gnueabi-g++ \
		--prefix=/opt/tslib \    #设置安装目录
		--host=arm-linux \    #设置目标平台类型
		--enable-input \
		ac_cv_func_malloc_0_nonnull=yes

make -j4    #编译

执行该脚本文件出错:

......
error:possibly undefined macro:AC_MSG_ERROR
......

确保m4 automake pkg-config libtool工具正常安装,这里没有安装 pkg-config导致出错,apt-get install pkg-config。然后再次执行脚本文件进行配置及编译。

编译完成之后执行 make install ,安装在在 /opt/tslib 文件下,将 /opt/tslib 全部复制到目标系统板中去,同时删除原来的ts_test等旧版本tslib的工具集以及动态链接库libts.so.xx.xx等,然后设置环境变量:

export T_ROOT=/opt/tslib
export LD_LIBRARY_PATH=$T_ROOT/lib:$LD_LIBRARY_PATH
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
#export TSLIB_TSDEVICE=/dev/input/event4
export TSLIB_PLUGINDIR=$T_ROOT/lib/ts
export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf
export POINTERCAL_FILE=/etc/pointercal
export TSLIB_CALIBFILE=/etc/pointercal

export PATH=$T_ROOT/bin:$PATH

export QTEDIR=/opt/qt5.4.1
export LD_LIBRARY_PATH=$QTEDIR/lib:$LD_LIBRARY_PATH
export QT_QPA_GENERIC_PLUGINS=tslib
#export QT_QPA_GENERIC_PLUGINS=evdevmouse:/dev/input/event1
export QT_QPA_FONTDIR=$QTEDIR/lib/fonts
export QT_QPA_PLATFORM_PLUGIN_PATH=$QTEDIR/plugins 
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0:size=800x480:mmSize=480x272:offset=0x0:tty=/dev/ttyS0
export QT_QPA_FB_TSLIB=1

具体的环境变量的值参考:https://github.com/libts/tslib#environment-variables-optional进行配置。执行新版本的 ts_test 工具,运行没有问题,执行原来的QT应用程序,报错

[root@dragonboard /mnt]# ./qttest 
./qttest: error while loading shared libraries: libts-1.0.so.0: cannot open shared object file: No such file or directory

环境变量以及设置好了,查看现在版本的tslib中的动态链接库文件:

[root@dragonboard /mnt]# ls /opt/tslib/lib/ -al
total 36
drwxr-xr-x    4 root     root          4096 Jan  1 22:53 ./
drwxr-xr-x    7 root     root          4096 Jan  1 22:53 ../
-rwxr-xr-x    1 root     root           918 Jan  1 22:53 libts.la*
lrwxrwxrwx    1 root     root            15 Jan  1 22:53 libts.so -> libts.so.0.10.2*
lrwxrwxrwx    1 root     root            15 Jan  1 22:53 libts.so.0 -> libts.so.0.10.2*
-rwxr-xr-x    1 root     root         15688 Jan  1 22:53 libts.so.0.10.2*
drwxr-xr-x    2 root     root          4096 Jan  1 22:53 pkgconfig/
drwxr-xr-x    2 root     root          4096 Jan  1 22:53 ts/

tslib版本改变之后,库文件名也改变了,我们需要使用最新的tslib来重新编译QT源码,也可以创建一个软链接:

ln -s /opt/tslib/lib/libts.so.0.10.2 libts-1.0.so.0

运行QT应用程序,没有问题,新老库的接口是兼容的。