QT和tslib的移植

article/2025/1/16 4:48:13

QT(5.12.9)和tslib(1.4)的移植

前提条件:

添加交叉编译工具链到环境变量中

vim ~/.bashrc
export PATH=toolchain_absolute_dir:$PATH
# 保存退出source ~/.bashrc# 验证
echo $PATH

在这里插入图片描述

TSlib移植

1、tslib源码获取

# 获取源码 (1.4版本)
sudo git clone https://github.com/15903016222/tslib.git官方最新版:sudo git clone https://github.com/libts/tslib.git# 安装必要的插件
sudo apt-get install automake autoconf libtool libsysfs-dev

2、编译tslib源码

1 # 进入到tslib下载的源码目录
cd tslib
2 # 清除配置(可选)
sudo ./autogen-clean.sh
3 # 自动配置
sudo ./autogen.sh4 # 进入到sudo su 用户,为configure做准备
sudo su
echo  "ac_cv_func_malloc_0_nonnull=yes"  > tmp.cache
sudo ./configure --host=arm-linux --cache-file=tmp.cache   --prefix=/opt/tslib CC=/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc
#--prefix=/opt/tslib 是tslib的安装目录
#CC= 板子所对应的交叉编译工具链对应的绝对路径(gcc路径)5 # 编译安装
make -j16
make install
# 完成后在对应的--prefix目录下就能看到安装的tslib对应的lib、include等文件

在这里插入图片描述

3、移植

通过ADB、U盘挂载、NFS等方式将编译出的所有东西打包到开发板上。

QT移植

1、QT 5.12.9 源码获取

# 到https://download.qt.io/archive/qt/5.12/5.12.9/single/ 网站下载
# qt-everywhere-src-5.12.9.tar.xz 源码并解压到Linux系统中
# 解压完后修改qmake.conf文件
cd qt_5.12.9_source/qtbase/mkspecs/linux-arm-gnueabi-g++/
vi qmake.conf
修改的文件如下:

2、编译QT源码

在这里插入图片描述

2.1、修改qmake.conf文件,配置交叉编译工具链

#qmake.conf
#
# qmake configuration for building with arm-linux-gnueabi-g++
#MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib#add_begin
QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS += -O2 -march=armv7-a -mtune=cortex-a7 -mfpu=neon -mfloat-abi=hard
QMAKE_CXXFLAGS += -O2 -march=armv7-a -mtune=cortex-a7 -mfpu=neon -mfloat-abi=hard
#add_endinclude(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)# modifications to g++.conf
QMAKE_CC                = arm-rockchip830-linux-uclibcgnueabihf-gcc
QMAKE_CXX               = arm-rockchip830-linux-uclibcgnueabihf-g++
QMAKE_LINK              = arm-rockchip830-linux-uclibcgnueabihf-g++
QMAKE_LINK_SHLIB        = arm-rockchip830-linux-uclibcgnueabihf-g++# modifications to linux.conf
QMAKE_AR                = arm-rockchip830-linux-uclibcgnueabihf-ar cqs
QMAKE_OBJCOPY           = arm-rockchip830-linux-uclibcgnueabihf-objcopy
QMAKE_NM                = arm-rockchip830-linux-uclibcgnueabihf-nm -P
QMAKE_STRIP             = arm-rockchip830-linux-uclibcgnueabihf-strip
load(qt_config)

2.2、自动配置脚本 autoconfigure.sh

# 回到 qt源码的安装目录下,使用以下的自动配置脚本
./configure -prefix /home/ubuntu/application/qt-src-5.12.9/arm-qt \
-opensource \
-confirm-license \
-release \
-strip \
-shared \
-xplatform linux-arm-gnueabi-g++ \
-optimized-qmake \
-c++std c++11 \
--rpath=no \
-pch \
-skip qt3d \
-skip qtactiveqt \
-skip qtandroidextras \
-skip qtcanvas3d \
-skip qtconnectivity \
-skip qtdatavis3d \
-skip qtdoc \
-skip qtgamepad \
-skip qtlocation \
-skip qtmacextras \
-skip qtnetworkauth \
-skip qtpurchasing \
-skip qtremoteobjects \
-skip qtscript \
-skip qtscxml \
-skip qtsensors \
-skip qtspeech \
-skip qtsvg \
-skip qttools \
-skip qttranslations \
-skip qtwayland \
-skip qtwebengine \
-skip qtwebview \
-skip qtwinextras \
-skip qtx11extras \
-skip qtxmlpatterns \
-make libs \
-make examples \
-nomake tools -nomake tests \
-gui \
-widgets \
-dbus-runtime \
--glib=no \
--iconv=no \
--pcre=qt \
--zlib=qt \
-no-openssl \
--freetype=qt \
--harfbuzz=qt \
-no-opengl \
-linuxfb \
--xcb=no \
-tslib \
--libpng=qt \
--libjpeg=qt \
--sqlite=qt \
-plugin-sql-sqlite \
-I/opt/tslib/include \
-L/opt/tslib/lib \
-recheck-all

以上有几个地方需要改动

  • 第一行的–prefix:编译出来的QT需要安装在哪儿
  • 倒数第三行的-I:之前编译出来的tslib头文件安装路径
  • 倒数第二行的-L:之前编译出来的tslib库文件安装路径

2.3、编译源码

# 添加执行权限
chmod +x autoconfigure.sh
# 然后执行 
./autoconfigure.sh
# 执行完后再make 和 make install
make (耗时超级长)make install

板子上配置环境变量

1、tslib的环境变量

# vi /etc/profile  新增以下内容export TSLIB_ROOT=/opt/tslib
export TSLIB_TSDEVICE=/dev/input/event1 
export QWS_MOUSE_PROTO=tslib:/dev/input/event1
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# 退出后
source /etc/profile
  • TSLIB_ROOT为自己在板端存放tslib的实际路径;

  • TSLIB_TSDEVICE 和QWS_MOUSE_PROTO这两项需要查看自己的板子的触摸屏设备对应/dev/input/下什么文件,然后将其修改成对应的

2、QT的环境变量

# vi /etc/profile 新增以下内容export QT_ROOT=/usr/lib/arm-qt
export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event1
export QT_QPA_FONTDIR=/usr/share/fonts
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_PLUGIN_PATH=$QT_ROOT/plugins
export LD_LIBRARY_PATH=$QT_ROOT/lib:$QT_ROOT/plugins/platforms
export QML2_IMPORT_PATH=$QT_ROOT/qml
export QT_QPA_FB_TSLIB=1# 退出后
source /etc/progfile# qt使用中文
#将 windows 下的(路径 C:\Windows\Fonts)下的中文字库放到新建一个/usr/share/fonts/目录下就可以了,然后修改环境变量

Linux上QTCreator的配置

1、编译器设置

在这里插入图片描述

添加编译器的路径为交叉编译工具链所在的gcc以及g++路径。

2、QT version设置

在这里插入图片描述

同样地,在QT Version中找到之前编译过后的QT路径中去找到对应的qmake,添加进来,然后配置套件。

3、kits 设置

在这里插入图片描述

这里就配置成功了,就可以去写QT程序了。

注意,用这个配置只能构建项目,而不能执行项目,因为工具链生成的是适合于板子架构运行的程序,Linux跑不了。只能将项目目录下的debug文件夹的可执行文件拷贝到板子上运行。(前提是,板子上的环境都配置好了)


http://chatgpt.dhexx.cn/article/R5BiOHSq.shtml

相关文章

tslib-1.21 ts_setup详解

几个月前买了Imx6ull的开发板,跟着韦东山老师的课程,把linux应用,驱动基础学完了,紧跟着课程又完成了第一个linux项目-电子量产工具。 虽然做完了项目,但毕竟不是完全靠自己编写的,所以决定重头看一下项目的…

tslib库编译与移植

tslib库编译与移植 1.tslib库简介 tslib 是电阻式触摸屏用于校准的一个软件库,是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。 2…

tslib安装以及使用

tslib的一些小问题:https://blog.csdn.net/xiaodingqq/article/details/80807362 1.先在网上下载 tslib-1.4.tar.gz压缩包 2.然后在ubuntu编译: tar xzf tslib-1.4.tar.gzcd tslib./autogen.sh      mkdir tmp          //创建安…

使用 tslib 库

tslib 是专门为触摸屏设备所开发的 Linux 应用层函数库,并且是开源。 tslib 为触摸屏驱动和应用层之间的适配层, 它把应用程序中读取触摸屏 struct input_event 类型数据(这是输入设备上报给应用层的原始数据)并进行解析的操作过程…

tslib 的安装与使用

5 tslib 需要安装好触摸屏驱动 tslib 是一个触摸屏的开源库,可以使用它来访问触摸屏设备,可以给输入设备添加各种“filter”(过滤器,就是各种处理),地址是:http://www.tslib.org/。 编译 tslib 后,可以得到…

第三方库介绍——tslib库

文章目录 tslib 简介tslib 框架分析tslib 的框架 交叉编译、测试 tslibtslib应用程序 tslib 简介 tslib 是一个触摸屏的开源库,可以使用它来访问触摸屏设备,可以给输入设备添加各种“ filter ”( 过滤器,就是各种处理) 编译 tslib 后&#…

tslib框架分析

tslib时一个触摸屏的开源库,可以使用它来访问触摸屏设备,可以输入给设备添加各种"filter",地址这里 编译tslib后,可以得到libts库,还可以得到各种工具:校准工具、测试工具 一、tslib框架分析 …

暑假实训成果及心得

暑假实训成果及心得 本次暑假实训主要从大数据的现况及前景出发,通过大数据发展的趋势及鲲鹏云大数据对大数据有了一个全新的认识。 自我介绍 本着对大数据热爱,我毅然决然的踏上了这条大数据的不归路。第一次接触大数据是在高三的语文试卷里&#xf…

大学生mysql实训心得_大学生实训心得体会范文(精选3篇)

大学生实训心得体会范文(精选3篇) 当在某些事情上我们有很深的体会时,往往会写一篇心得体会,这样可以帮助我们总结以往思想、工作和学习。一起来学习心得体会是如何写的吧,以下是小编为大家收集的大学生实训心得体会范文(精选3篇),仅供参考,欢迎大家阅读。 大学生实训心得…

谈谈我的实习感受~

写在前面 有粉丝私信说,让我出一篇关于工作感受的文章,今天他来了。 初来乍到 刚入职的时候,一个词形容——一脸懵逼,不过有人带着会好很多,他会告诉你需要做什么,当然了刚来的一两周一般都是熟悉公司业务&…

c语言实验报告总结通用版,大学生实训心得体会(通用11篇)

大学生实训心得体会(通用11篇) 我们心里有一些收获后,好好地写一份心得体会,这样能够培养人思考的习惯。很多人都十分头疼怎么写一篇精彩的心得体会,以下是小编精心整理的大学生实训心得体会(通用11篇),欢迎大家分享。 大学生实训心得体会1 在我们过去的读书生涯中,有一个…

云计算实训报告总结_实训报告心得体会(通用5篇)

实训报告心得体会(通用5篇) 我们在一些事情上受到启发后,马上将其记录下来,这样就可以总结出具体的经验和想法。那么如何写心得体会才能更有感染力呢?以下是小编帮大家整理的实训报告心得体会(通用5篇),欢迎阅读,希望大家能够喜欢。 实训报告心得体会1 我对于visualbasic的…

大学生html5实训报告,大学生实训心得体会范文(精选5篇)

大学生实训心得体会范文(精选5篇) 当我们积累了新的体会时,应该马上记录下来,写一篇心得体会,如此就可以提升我们写作能力了。你想好怎么写心得体会了吗?下面是小编整理的大学生实训心得体会范文(精选5篇),仅供参考,大家一起来看看吧。 大学生实训心得体会1 五月,在各种…

html5实训总结200字,实训心得体会范文200字(通用5篇)

实训心得体会范文200字(通用5篇) 当我们心中积累了不少感想和见解时,写心得体会是一个不错的选择,这样就可以通过不断总结,丰富我们的思想。那么心得体会怎么写才恰当呢?下面是小编收集整理的实训心得体会范文200字(通用5篇),仅供参考,大家一起来看看吧。 实训心得体会1 …

大学生html5实训心得体会,实训心得体会600字(精选5篇)

实训心得体会600字(精选5篇) 当我们心中积累了不少感想和见解时,写一篇心得体会,记录下来,这样我们就可以提高对思维的训练。但是心得体会有什么要求呢?下面是小编帮大家整理的实训心得体会600字(精选5篇),欢迎阅读,希望大家能够喜欢。 实训心得体会600字1 时间过的真快,…

上第一次实训课感想

上第一次Java实训课感想 第一天开始实训,有点担心自己不会做,但第一天分配的任务比我想象的要简单一点,是用navicat创建数据表,用到了mysql的知识。 比较麻烦的就是给表导入数据,因为数据比较多,所以比较麻烦,但总体来说还好。 然后用百度脑图创建了一张思维导图,如下…

html怎么制作表单,HTML如何制作表单

制作表单的方法:首先使用form标签创建表单,搭建表单框架;然后使用input标签创建文本输入框和提交按钮;接着使用select和option标签创建下拉列表;最后使用textarea标签创建文本区域即可。 本教程操作环境:wi…

HTML 什么是表单

什么是表单 HTML 表单的主要作用是接收用户的输入,当用户提交表单时,浏览器将用户在表单中输入的数据打包,并发送给服务器,从而实现用户与Web服务器的交互。 表单是控件的容器,一个表单由form元素、表单控件和表单按…

HTML表单和表格

一.表单 HTML 表单简介 定义和用法 HTML 常用表单元素 属性 1.1 HTML表单简介 HTML 表单是 HTML 文档中的 一个区域 HTML 表单这个区域中包含了一系列的 可交互元素 HTML 表单主要用于 收集用户输入信息 1.2 定义和用法 <form> 标签用于为用户输入创建 HTML 表单。 …

HTML登录表单的制作

表单的知识点总结 form必须有action属性&#xff0c;表示提交地址所有需要提交的数据&#xff0c;input必须有name属性input按钮的文字&#xff0c;使用value属性表示input必须放在form标签才能提交 input标签常见类型总结 文本输入框 密码输入框 单选框 复选框 type"…