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应用程序,没有问题,新老库的接口是兼容的。