Qt5.9+tslib1.4移植

先移植TSLIB

1、安装前的准备工作:
再root模式下安装下面软件。

# apt-get install autoconf
# apt-get install automake
# apt-get install libtool

2、下载tslib源码

3、配置

# ./autogen-clean.sh
# ./autogen.sh
# echo "ac_cv_func_malloc_0_nonnull=yes">arm-linux.cache
# ./configure --host=arm-none-linux-gnueabi  --cache-file=arm-none-linux-gnueabi.cache --enable-inputapi=no  --prefix=/opt/qt/juan/tslib

其中prefix下面配置的是你的安装路径

./autogen.sh 时,所出现一下提示:

Qt5.9+tslib1.4移植_第1张图片

解决方法:

Qt5.9+tslib1.4移植_第2张图片

添加红框内的语句。

4、编译
在终端里以root用户的身份进入tslib目录里面

执行make

执行make install

5.修改con内容

vi /opt/qt/juan/tslib/etc/ts.conf

将配置文件改为

module_raw input
module pthres pmin=1
module variance delta=30
module dejitter delta=100
module linear

6.移动到开发板

将安装路径下的整个tslib文件夹,下载至开发板的上.

8、 设置开发板环境变量
通过超级终端, 打开环境变量文件/etc/profile

vi /etc/profile

添加如下内容:

export TSLIB_ROOT=/opt/sendinfo/tslib 
export TSLIB_TSDEVICE=/dev/input/event0 
export QWS_MOUSE_PROTO=tslib:/dev/input/event0 
export TSLIB_CALIBFILE=/etc/pointercal 
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf 
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts 
export TSLIB_FBDEVICE=/dev/fb0 
export TSLIB_CONSOLEDEVICE=none 
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib

其中,TSLIB_ROOT更换为自己实际存放的路径;
另外,TSLIB_TSDEVICE 和QWS_MOUSE_PROTO这两项需要查看自己的板子的触摸屏设备对应/dev/input/下哪个文件

9.测试

小问题汇总:

1.测试时发现输出的x,y轴的值相等

原因:发现是linux内核驱动不支持触摸屏硬件。

解决方法:在内核驱动的USB设备里添加触摸屏设备

Qt5.9+tslib1.4移植_第3张图片

Qt5.9+tslib1.4移植_第4张图片

再在内核目录下运行make menuconfig选择要配置的设备。

Qt5.9+tslib1.4移植_第5张图片

Qt5.9+tslib1.4移植_第6张图片

Qt5.9+tslib1.4移植_第7张图片

Qt5.9+tslib1.4移植_第8张图片

运行make uImage

2.ts_open: No such file or directory

原因:设备路径配置错误

解决方法:

1.查看设备是event几

cd /dev/
ls

2.打开配置  vi /etc/profile

export TSLIB_TSDEVICE=/dev/input/event0 

3.Couldnt open tslib config file: No such file or directory ts_config: Illegal seek
  

解决办法:#export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf

更多问题见:https://blog.csdn.net/xiaoyangger/article/details/5369961

 

再移植QT5.9

本人参考博客:https://blog.csdn.net/vickycheung3/article/details/82182136

1.官网下载源码包 qt-everywhere-opensource-src-5.9.5.tar.xz

2.解压

3.进入root模式,配置交叉编译器的路径,输入(arm + Tab键)看是否有交叉编译器显示

4.修改qmake.conf配置

cd qt-everywhere-opensource-src-5.9.5

vi qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf

Qt5.9+tslib1.4移植_第9张图片

5.根据需求添加配置

./configure \	
-v \	
-prefix /opt/sendinfo \	
-sysroot /opt/chain/arm-2014.05/arm-none-linux-gnueabi \	
-release \	
-static \ 
-make libs \	
-xplatform arm-linux-gnueabi-g++ \	
-optimized-qmake \	
-pch \	
-qt-zlib \	
-no-opengl \	
-no-sse2 \	
-no-openssl \	
-no-cups \	
-no-separate-debug-info \	
-nomake examples -nomake tools \
-tslib \
-I/opt/wlj/tslib-transplant/juan/tslib/include \
-L/opt/wlj/tslib-transplant/juan/tslib/lib

static为静态库,若要使用电容触摸屏需要添加最后三行。

Qt5.9+tslib1.4移植_第10张图片

configure命令执行完毕后会出现如下界面,查看自己选择的需要编译的功能。

6.make&&make install  此过程需要大约两个小时

7.将编译安装得到的lib、plugins拷贝到开发板中,lib中存放的是QT程序运行所需的动态库文件,plugins中存放的应该是所需的插件。

8.配置开发环境并运行程序。vi /etc/profile

#export LD_LIBRARY_PATH=/lib                                                                                     
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0                                              
export QT_QPA_FONTDIR=/lib/fonts                                                        
export LD_PRELOAD=/system/lib/preloadable_libiconv.so                                   
export PATH=/opt/wlj/Qt5.9/bin:$PATH

export TSLIB_ROOT=/opt/wlj/tslib
export TSLIB_TSDEVICE=/dev/event10
export QWS_MOUSE_PROTO=tslib:/dev/event10
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_CONSOLEDEVICE=none
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib
export QT_QPA_GENERIC_PLUGINS=tslib:/dev/event10
export LD_LIBRARY_PATH=/opt/wlj/Qt5.9/lib
export QT_QPA_PLATFORM_PLUGIN_PATH=/opt/wlj/Qt5.9/plugins
#export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0
#export QT_QPA_FONTDIR=opt/wlj/lib/fonts
export QT_PLUGIN_PATH=$QT_ROOT/plugins/
export QT_ROOT=/opt/wlj/Qt5.9
export LD_PRELOAD=$TSLIB_ROOT/lib/libts.so

export QT_QPA_GENERIC_PLUGINS=evdevmouse:/dev/event1 

注意:export  LD_PRELOAD=$TSLIB_ROOT/lib/libts.so 特别重要

          export QT_QPA_GENERIC_PLUGINS=evdevmouse:/dev/event1  鼠标

原因:初始tslib会动态加载tslib的一些模块,这四个模块pthres、variance、dejitter、linear会用到libts.so这个库里的一个函数tslib_parse_vars;

而tslib的测试程序已经动态链接了libts.so,加载 tslib的上速模块时能够正确识别函数tslib_parse_vars。

所以需要在 /etc/profile中动态链接到库libts.so

 

你可能感兴趣的:(Qt5.9+tslib1.4移植)