ubuntu虚拟机安装Qt5 for ARM 集成tslib库

文章目录

  • 前言
  • 1、tslib库功能和使用方法
    • 1.1 tslib库简介
    • 1.2 两种使用tslib的方法
  • 2、ubuntu安装tslib 库
  • 3、交叉编译tslib
    • 3.1 cross-toolchain-file.txt
    • 3.2 编译和安装tslib
  • 4、新建项目,加入外部库tslib

前言

tslib库是一个开源库,专门为触摸屏设备设计,提供了通用的触摸屏事件处理框架,可以有效地解决Linux系统中触摸屏设备的输入问题。
在上一篇文章《Ubuntu虚拟机安装Qt5 for ARM交叉开发环境》中,我们详细介绍了如何在虚拟机中安装Qt交叉开发环境。本篇文章将介绍如何将tslib库集成到Qt5中,以便在Qt应用程序中使用触摸屏事件处理。


1、tslib库功能和使用方法

1.1 tslib库简介

tslib库是一个针对触摸屏设备的开源库,它提供了一个通用的触摸屏事件处理框架,能够有效地解决触摸屏设备在Linux系统中的输入问题。

tslib库的主要功能包括:

  • 支持多种触摸屏设备
  • 提供标准化的触摸屏事件接口
  • 支持触摸屏事件的校准和校验
  • 支持触摸屏坐标的转换和映射
  • 提供命令行工具和示例程序
    tslib库主要使用C语言编写,可以在Linux系统下运行,并且支持多种嵌入式设备平台,如ARM、MIPS等。

在使用tslib库时,通常需要先对触摸屏设备进行校准,以确保触摸屏的输入准确性。校准完成后,就可以使用tslib库提供的接口获取触摸屏事件并进行相应的处理了。

总之,tslib库为嵌入式Linux系统中的触摸屏设备提供了一个简单、高效的输入事件处理方案,可以大大提高嵌入式设备的用户体验。

1.2 两种使用tslib的方法

这两种方法的主要区别在于应用程序如何使用 tslib 库。

在使用 -qt-mouse-tslib 参数配置 Qt 编译选项时,Qt 库中的鼠标驱动将使用 tslib 库来读取触摸屏输入。这意味着 Qt 库为应用程序提供了 tslib 的接口,应用程序直接使用 Qt 库中 tslib 的函数读取触摸屏输入即可。如果采用这种方法,则在编译应用程序时,不需要显式地引用 tslib 库,因为 Qt 库已经包含了 tslib 的接口。

而如果将 tslib 作为外部库加入 Qt Creator,那么需要在编译应用程序时,显式地将 tslib 库链接到应用程序中。这样做的好处是,可以在应用程序中直接使用 tslib 提供的一些其他功能,而不局限于 Qt 库中已经实现的触摸屏输入功能。同时,在使用其他库时,也可以方便地链接 tslib 库,避免了重复编写或链接 tslib 库的工作。

因此,如果只是需要支持触摸屏输入功能,那么 -qt-mouse-tslib 参数是一个比较方便的选择;如果还需要使用 tslib 的其他功能或同时使用其他库,那么将 tslib 作为外部库加入 Qt Creator 中可能更为便捷。
本文介绍如何将tslib作为外部库加入Qt Creator。
在之后的《ubuntu虚拟机安装Qt4 for ARM 交叉开发环境》一文中我们会介绍如何使用-qt-mouse-tslib 参数将tslib库加入Qt安装程序包中。

2、ubuntu安装tslib 库

以下是在 Ubuntu 操作系统上使用 CMake 编译和安装 tslib 库的步骤:
(1) 下载 tslib 源代码

git clone https://github.com/libts/tslib.git

(2)进入 tslib 目录,并创建 build 目录

$ cd tslib
$ mkdir build
$ cd build

(3) 运行 CMake 并指定安装目录

$ cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/tslib

(4) 编译并安装

$ make
$ sudo make install

(5) 配置库搜索路径

将 tslib 库的路径添加到系统库搜索路径中,以便在编译其他程序时能够找到该库。编辑 /etc/ld.so.conf 文件,添加以下行:

/usr/local/tslib/lib

保存并退出文件。然后运行以下命令更新系统库缓存:

$ sudo ldconfig

现在,tslib 库已经成功编译和安装到系统中了。

(6) 查看安装结果

ldconfig -p | grep tslib

libts.so.0 (libc6,x86-64) => /usr/local/tslib/lib/libts.so.0
libts.so (libc6,x86-64) => /usr/local/tslib/lib/libts.so

这些结果表明你已经成功地安装了tslib库,并且库文件被安装在了/usr/local/tslib/lib/目录下。其中,libts.so.0和libts.so是tslib库的两个动态链接库文件,分别提供不同的功能和接口。这些文件的路径被添加到了系统的共享库搜索路径中,因此程序可以在运行时找到并加载这些库文件。

3、交叉编译tslib

3.1 cross-toolchain-file.txt

cross-toolchain-file.txt 文件通常是通过手动创建并编辑来实现交叉编译的。该文件包含了一些交叉编译需要用到的工具链信息,比如交叉编译工具链的名称、路径、编译器、链接器、库路径等等。在 CMake 中,可以使用 CMAKE_TOOLCHAIN_FILE 变量指定该文件的路径,以便在交叉编译时使用正确的工具链。在创建 cross-toolchain-file.txt 文件时,需要了解目标设备的架构、操作系统、工具链等信息,并且需要确保所选工具链与目标设备兼容。

下面是一个cross-toolchain-file.txt文件的示例:

set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)

set(TOOLCHAIN_PREFIX /usr/arm-linux-gnueabi/bin)
set(TOOLCHAIN_INCLUDE_PATH /usr/arm-linux-gnueabi/include)
set(TOOLCHAIN_LIBRARY_PATH /usr/arm-linux-gnueabi/lib)

set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}/arm-linux-gnueabi-gcc)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}/arm-linux-gnueabi-g++)
set(CMAKE_STRIP ${TOOLCHAIN_PREFIX}/arm-linux-gnueabi-strip)

set(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_LIBRARY_PATH})
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

下面逐句解释它的作用:

  • set(CMAKE_SYSTEM_NAME Linux):设置CMake系统名称为Linux。
  • set(CMAKE_SYSTEM_PROCESSOR arm):设置CMake系统处理器为arm。
  • set(TOOLCHAIN_PREFIX /opt/arm-linux-gnueabi/bin):设置交叉编译器的前缀路径为/opt/arm-linux-gnueabi/bin。
  • set(TOOLCHAIN_INCLUDE_PATH /opt/arm-linux-gnueabi/include):设置交叉编译器的头文件路径为/opt/arm-linux-gnueabi/include。
  • set(TOOLCHAIN_LIBRARY_PATH /opt/arm-linux-gnueabi/lib):设置交叉编译器的库文件路径为/opt/arm-linux-gnueabi/lib。
  • set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}/arm-linux-gnueabi-gcc):设置C编译器路径为交叉编译器路径下的arm-linux-gnueabi-gcc。
  • set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}/arm-linux-gnueabi-g++):设置C++编译器路径为交叉编译器路径下的arm-linux-gnueabi-g++。
  • set(CMAKE_STRIP ${TOOLCHAIN_PREFIX}/arm-linux-gnueabi-strip):设置strip命令的路径为交叉编译器路径下的arm-linux-gnueabi-strip。
  • set(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_LIBRARY_PATH}):设置查找库文件的根路径为交叉编译器的库文件路径。
  • set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER):禁用查找程序的根路径。
  • set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY):仅在查找库文件时使用查找根路径。
  • set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY):仅在查找头文件时使用查找根路径。

3.2 编译和安装tslib

(1) 运行 CMake 并指定安装目录

$ cmake .. -DCMAKE_INSTALL_PREFIX=/home/linux/tslib-arm -DCMAKE_TOOLCHAIN_FILE=cross-toolchain-file.txt

(2) 编译并安装程序包

$ make
$ sudo make install

4、新建项目,加入外部库tslib

(1)打开qtcreator

qtcreator

(2)新建一个项目“hello-tslib”
ubuntu虚拟机安装Qt5 for ARM 集成tslib库_第1张图片(3)选择正确的Kits,
ubuntu虚拟机安装Qt5 for ARM 集成tslib库_第2张图片(4)生成项目如下图,右击“helloword”项目名,选择外部库,点击「Next」:
ubuntu虚拟机安装Qt5 for ARM 集成tslib库_第3张图片(5)选择我们前面编译安装好的tslib库:
ubuntu虚拟机安装Qt5 for ARM 集成tslib库_第4张图片(6)编译完成:

ubuntu虚拟机安装Qt5 for ARM 集成tslib库_第5张图片

你可能感兴趣的:(qt嵌入式开发,qt,ubuntu,linux)