首页 > 其他分享 >QT移植到imx6ull ARM板子上面

QT移植到imx6ull ARM板子上面

时间:2024-07-07 21:28:50浏览次数:16  
标签:qt skip ARM linux tslib imx6ull 板子 arm QT

目录

前言:

1.资料准备:

2.编译tslib库

3.编译qt库源码

4.配置arm板子qt 和 tslib 环境

5.qt安装和配置

6.新建QT工程

7.arm板子运行第一个qt程序

8.关闭arm板子出厂gui程序


前言:

本文章是移植qt库到imx6ull上面能够运行,同时移植tslib库(触摸屏)到imx6ull上面,适用于大部分arm板子,适合新手小白,小编自己也摸索了2天,结合众多大佬的文章,希望能够帮助到各位。

环境配置:

ubantu16.0

开发板:韦东山imx6ull_mini

(什么板子不重要都一样,主要是板子编译器不一样,参考了好多正点原子的例子)

1.资料准备:

tslib-1.21.tar.bz2 :arm板子触摸屏环境配置

qt-everywhere-src-5.12.9 :qt源码用于arm板子 qt环境配置

qt-opensource-linux-x64-5.12.9.run :qt软件安装包

链接: https://pan.baidu.com/s/1YQ3QKRJiZajrYvvD_ODBIA 提取码: eiq7

2.编译tslib库

tslib 是 Linux 下的一个触摸屏(Touch Screen)驱动库,它可以很好地支持各种不同类型的触摸屏设备,并提供标准的输入接口。在编译 Qt 时,启用 tslib 特性可以使得 Qt 应用程序能够更好地支持触摸屏交互,从而提升应用程序在嵌入式设备上的用户体验。

对于 ARM 架构下的 Qt 环境,一般都是在嵌入式设备上运行 Qt 应用程序,而嵌入式设备常常会使用触摸屏进行人机交互,因此 tslib 可以说是嵌入式 Qt 应用开发中必不可少的一个库。

1.把tslib压缩包传到ubantu里面,你放在哪个文件夹都可以,我直接放在/hom/book里面

2.在book目录下解压tslib

tar xvf tslib-1.21.tar.bz2

3.编译tslib库之前需要安装一些依赖文件

sudo apt-get install autoconf 
sudo apt-get install automake 
sudo apt-get install libtool 

4.然后执行以下编译命令

(但是要注意把交叉编译链换成自己arm板子编译链和tslib库换成自己路径)

./configure --host=arm-buildroot-linux-gnueabihf ac_cv_func_malloc_0_nonnull=yes --cache-file=arm-buildroot-linux-gnueabihf.cache -prefix=/home/book/tslib-1.21/tslib-arm
​
make
make install

./configure --host=arm-buildroot-linux-gnueabihf ac_cv_func_malloc_0_nonnull=yes --cache-file=arm-buildroot-linux-gnueabihf.cache -prefix=/home/book/tslib-1.21/tslib-arm


​arm-buildroot-linux-gnueabihf :是小编自己arm编译工具链

/home/book/tslib-1.21 :是自己的tslib解压的路径

tslib-arm :编译tslib库生成的东西存放在这个文件夹,可以自己命名,后面要将这个文件夹cp到arm板子里面去

3.编译qt库源码

1、上传源码到ubantu /home/book 路径(可以自选)

2.解压qt源码

tar -xvf qt-everywhere-src-5.12.9.tar.xz

3.修改qt源码中make.config

gedit qt-everywhere-src-5.12.9/qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf

源码:


MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a 		# 自己的cpu型号
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a 	 #

include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)

# modifications to g++.conf
QMAKE_CC                = arm-buildroot-linux-gnueabihf-gcc		# linux自己的交叉编译器
QMAKE_CXX               = arm-buildroot-linux-gnueabihf-g++
QMAKE_LINK              = arm-buildroot-linux-gnueabihf-g++
QMAKE_LINK_SHLIB        = arm-buildroot-linux-gnueabihf-g++

# modifications to linux.conf
QMAKE_AR                = arm-buildroot-linux-gnueabihf-ar cqs		# linux自己的交叉编译器
QMAKE_OBJCOPY           = arm-buildroot-linux-gnueabihf-objcopy
QMAKE_NM                = arm-buildroot-linux-gnueabihf-nm -P
QMAKE_STRIP             = arm-buildroot-linux-gnueabihf-strip

load(qt_config)

需要注意的是arm-buildroot-linux-gnueabihf 是自己arm 板子编译工具链,不然后面会有bug

4.进入qt-everywhere-src-5.12.9文件夹下 配置一个编辑文件  名字可以自己命名

cd qt-everywhere-src-5.12.9
gedit autoconfigure.sh

源码

./configure -prefix /home/book/qt-everywhere-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/home/book/tslib-1.21/tslib-arm/include \ 
-L/home/book/tslib-1.21/tslib-arm/lib \
-recheck-all

要注意其中三处:

1./home/book/qt-everywhere-src-5.12.9/arm-qt   qt库编译输出的路径

2./home/book/tslib-1.21/tslib-arm/include \  tsblib 头文件路径

3./home/book/tslib-1.21/tslib-arm/lib \       tslib 库文件路径

5、安装g++

sudo apt-get install g++

6、赋予脚本可执行权限,然后执行autoconfig.sh脚本

chmod +x autoconfigure.sh
./autoconfigure.sh 

如果出现

这样就算编译成功,然后才能执行下面的

如果出错就百度/chatgpt解决,小编出现过这样的错误

ERROR: Feature ‘tslib‘ was enabled, but the pre-condition‘libs.tslib‘ failed.

这样就是编译tslib时工具链不是自己板子的工具链

7、没有报错就在执行编译命令

make -j4

要等30min - 1h左右

8、安装

make install

没有权限就加sudo

安装成功就会生成一个arm-qt文件

就是之前配置时make.config自己命名的

到这里已经完成一大半了,接下来就把生成的arm-qt 和 tslib-arm 复制到自己的开发板上面

4.配置arm板子qt 和 tslib 环境

1、首先把两个文件夹复制到unbantu /home/book/nfs_rootfs下面,然后arm板子挂载nfs 文件系统就可以和ubantu 共享这个文件夹,然后就可以把文件复制到arm板子上面

板子挂载文件系统

mount -t nfs -o nolock,vers=3 192.168.5.11:/home/book/nfs_rootfs  /mnt

注意:这是小编自己复制文件的方法,你们有自己的传输ubantu 文件传输到arm板子上就不必理会这上面的方法

2、将开发板/mnt下的arm-qt 和 tslib-arm 文件复制到 /usr/lib下面

cp -r tslib-arm/ /usr/lib/
cp -r arm-qt/ /usr/lib/

3、配置开发板的环境变量

vi /etc/profiel

源码:

export QT_ROOT=/usr/lib/arm-qt
export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event4
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/profile 

4.测试板子的arm-qt 和 tslib-arm 库是否可用

1、/usr/lib/arm-qt/examples/widgets/animation/animatedtiles/animatedtiles //运行编译的示例

2、在tslib-arm/bin目录下运行,点击arm板子屏幕会出现下面

./ts_calibrate

到这里arm板子的qt和触摸屏的环境就全部配置好了,接下来就配置linux 下qt软件环境

5.qt安装和配置

1、把qt软件放在ubantu 任何目录下 /home/book

2、运行qt安装包 一定要加可执行权限,不然运行不了

chmod +x qt-creator-opensource-linux-x86_64-5.0.2.run
./qt-creator-opensource-linux-x86_64-5.0.2.run

3.断网直接跳过注册

设置安装路径自己安排

工具小编是全选的(我的内存500g),这是我安装之后又安一次的图和我第一次不一样,不要误会

后面直接同意,然后安装,qt页面应该会自动谈出来,如果没有那就直接去安装的目录下自己启动

小编的是在 /opt/下面 ,先到自己安装qt软件路径下执行下面的命令

cd Qt5.12.9/Tools/QtCreator/bin
./qtcreator.sh

4、qt 软件arm编译环境配置

1、点击Tools->Options 

点击Compliers->add->Gcc->c  注意:每次配置为要点击apply按钮

name:自己命名

compiler path: 选择自己板子编译工具链所在的位置的gcc工具链

Browse到下面图片的工具链

同样的方法添加一个add->Gcc->g++

2、点击QT Versions-add ->Browse到编译qt库源码生成的arm-qt/bin/qmake  点击open

3、kit配置:点击kit->

Name:自己命名

Compiler:刚刚自己配置的编译工具链

Qt version: 自己刚刚配置的

点击apply 和 OK

关闭QT

6.新建QT工程

在终端运行:<安装目录>/bin/qtcreator.sh

点击projects New

自己命名

选择qt存放的路径

选择qmake

两个套件都选

Fininsh 就已经建好了一个qt项目

点击mainwidow.ui进入图像见面

把按钮拖出来

保存文件

File->Save all

点击Dubug换编译器arm-qt5.12.9

点击绿色的按钮编译就行

编译出来的文件就可以放在arm板子上面运行

7.arm板子运行第一个qt程序

1、找到可执行test文件

qt_project->build-test-arm-qt5_12_9-Debug->test 复制到arm板子哪里都可以,我直接复制到

共享目录下。

运行qt程序:

现象:

如果不显示文字和字母就添加字库到/usr/share/fonts目录下

直接复制进去就行

cd /usr/share/fonts

字库获取方式:自己电脑C盘->windows->fonts就会有

8.关闭arm板子出厂gui程序

适用于韦东山 imx6ull_mini板子出厂gui关闭,其他的板子类似

mv /etc/init.d/S05lvgl /root && mv /etc/init.d/S99myirhmi2 /root &&reboot

开启出厂gui

mv /root /etc/init.d/S05lvgl && mv /root /etc/init.d/S99myirhmi2 /root && reboot

到这里就完成了!,希望给小编一个点赞和收藏

下一篇文章会写qt 点亮 imx6ull板子led灯(超简单方式)。

参考博客:

https://blog.csdn.net/vickycheung3/article/details/82182136

将windows下编写的QT代码在arm开发板(imx6ull)上运行_qt程序怎么在开发板上运行-CSDN博客

https://blog.csdn.net/weixin_44236302/article/details/136393573

标签:qt,skip,ARM,linux,tslib,imx6ull,板子,arm,QT
From: https://blog.csdn.net/lx3022949056/article/details/140229034

相关文章

  • 【QT】显示类控件
    显示类控件显示类控件1.label-标签2.LCDNumber-显示数字的控件3.ProgressBar-进度条4.CalendarWidget-日历5.LineEdit-输入框6.TextEdit-多行输入框7.ComboBox-下拉框8.SpinBox-微调框9.DateEdit&TimeEdit-日期微调框10.Dial-旋......
  • Qt之多线程编程(QThread)
    文章目录前言Qt多线程的基本使用如何移动线程常用的一些函数示例代码总结前言在现代计算机系统中,多线程编程已经成为一种常见的编程模式,它可以有效地利用多核处理器的计算能力,提高程序的执行效率。Qt作为一种跨平台的应用程序开发框架,提供了QThread类来支持多线程编......
  • python pyqt5学习记录(三)
    一、布局在PyQt5中,可以使用QHBoxLayout来创建水平布局,使用QVBoxLayout来创建垂直布局。以下是一个简单的例子,展示了如何将两个按钮分别放置在水平和垂直布局中。importsysfromPyQt5.QtWidgetsimportQApplication,QWidget,QPushButton,QVBoxLayout,QHBoxLayoutcla......
  • Qt/C++音视频开发78-获取本地摄像头支持的分辨率/帧率/格式等信息/mjpeg/yuyv/h264
    一、前言上一篇文章讲到用ffmpeg命令方式执行打印到日志输出,可以拿到本地摄像头设备信息,顺藤摸瓜,发现可以通过执行ffmpeg-fdshow-list_optionstrue-ivideo="Webcam"命令获取指定摄像头设备的分辨率帧率格式等信息,会有很多条。那为什么需要这个功能呢?现场大量应用下来,尽管......
  • ARMv8寄存器详解
    文章目录一、ARMv8寄存器介绍二、通用寄存器三、PSTAE寄存器四、特殊寄存器五、系统寄存器一、ARMv8寄存器介绍本文我来给大家介绍一下ARMv8的寄存器部分,ARMv8中有34个寄存器,包括31个通用寄存器、一个栈指针寄存器SP(X31),一个程序计数器寄存器PC,一个处理器状态寄存......
  • Pycharm 专业版 免费使用方法
    本方法2021.2.2及以下版本很好用;本方法2021.2.2及以下版本很好用;本方法2021.2.2及以下版本很好用;重要的事情说三遍!!!1.安装PyCharmProfessional2021.2.2及以下版本 OtherVersions-PyCharm(jetbrains.com) 从官网或者上方的url里找到对应版本安装pycharm我们以2021......
  • C++(Qt)-GIS开发-QGraphicsView显示瓦片地图简单示例
    C++(Qt)-GIS开发-QGraphicsView显示瓦片地图简单示例目录C++(Qt)-GIS开发-QGraphicsView显示瓦片地图简单示例1、概述2、实现效果3、主要代码4、源码地址更多精彩内容......
  • python和pycharm安装
    一、python和pycharm的作用Python是一种跨平台的计算机程序语言。Python是我们进行项目开发而使用的一门计算机语言,通俗来说就是编写代码,编写完代码之后,我们就需要运行,不然代码是死的,机器是无法识别的,这时我们需要运行Python代码的运行环境和工具。PyCharm带有一整套......
  • 基于Linux/ARM/单片机利用状态机对多个按键进行扫描实现短按或者长按
    1)Linux/ARM/单片机入门级按键扫描程序设计,分享给将要学习或者正在学习Linux/ARM/单片机开发的同学。2)内容属于原创,若转载,请说明出处。3)提供相关问题有偿答疑和支持。学习Linux/ARM/单片机的同学都会学习到一个知识点,就是按键扫描,本课题基于SigmaStar的平台SSC375芯片SOC详细......
  • 解决Pycharm配置R语言环境报错RWrapper terminated, exitcode: 127
    问题解决Pycharm配置R语言环境报错RWrapperterminated,exitcode:127errorwhileloadingsharedlibraries:libR.so:site:stackoverflow.com解决方案1.打开GetEnvVars.R文件打开C:\Users\UserName\AppData\Roaming\JetBrains\PyCharm版本号\plugins\r-plugin\R\目录......