首页 > 系统相关 >linux GUI-QT6.5移植到Mini2440

linux GUI-QT6.5移植到Mini2440

时间:2023-05-07 15:13:08浏览次数:55  
标签:qt skip GUI work Mini2440 linux root arm QT6.5

----------------------------------------------------------------------------------------------------------------------------
内核版本:linux 5.2.8
根文件系统:busybox 1.25.0
u-boot:2016.05
开发板:Mini2440
----------------------------------------------------------------------------------------------------------------------------

为实现目标嵌入式平台能够正常运行Qt程序,则需要在目标平台上部署QT运行环境。

一、QT编译和安装

1.1 QT版本介绍

QT的版本比较多,容易搞混。现分别介绍:

  • Qt/X11 :指用于Linux/Unix的版本。如:我们常用的qt-x11-opensource-src-4.5.3.tar.gz,它是用于PC机linux平台的QT源码;
  • Qt Windows:指用于Windows的版本;
  • qt-everywhere:指(在配置时加上不同的参数)既可用于x86,也可用于ARM,如qt-everywhere-opensource-src-4.7.0.tar.gzqt-everywhere-opensource-src-4.6.1.tar.gz;从Qt4.6开始提供这种源码包;
  • Qt/Embedded:指用于ARM平台的版本。如qt-embedded-linux-opensource-src-4.5.3.tar.gzz是用于嵌入式ARM的qt源码包;从Qt4.1开始,Qt/Embedded改名为Qtopia Core,又从Qt4.4.1开始,Qtopia Core又改名为Qt for Embedded Linux,一般发行的源码包的名字叫做:qt-embeded-linux-xxxxxx,但是自动Qt4.6开始就不再提供这种源码包了,而是开始提供qt-everywhere源码包;

1.2 qt-everywhere下载

这里我们下载qt-everywhere,这里我们不去选择较新版本,主要由于新版本已经不支持ARMv4t架构了。我们下载5.0版本即可。

国内镜像站点下载地址:

在ubuntu服务器上下载程序包: 

 

root@zhengyang:/work/sambashare# cd tools
root@zhengyang:/work/sambashare/tools# wget https://download.qt.io/archive/qt/5.0/5.0.0/single/qt-everywhere-opensource-src-5.0.0.tar.xz

 

 

 

下载完后,解压程序包:

root@zhengyang:/work/sambashare/tools# tar -xvf  qt-everywhere-opensource-src-5.0.0.tar.xz

1.3 修改qmake.conf

进入 qt-everywhere-opensource-src-5.0.0文件夹,针对Mini2440开发板,修改qmake.conf文件:

 

root@zhengyang:/work/sambashare/tools# cd  qt-everywhere-opensource-src-5.0.0/
root@zhengyang:/work/sambashare/tools/qt-everywhere-src-6.0.0/# vim qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf

 

 

 

源文件内容如下:

#
# qmake configuration for building with arm-linux-gnueabi-g++
#

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

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

# modifications to g++.conf
QMAKE_CC                = arm-linux-gnueabi-gcc
QMAKE_CXX               = arm-linux-gnueabi-g++
QMAKE_LINK              = arm-linux-gnueabi-g++
QMAKE_LINK_SHLIB        = arm-linux-gnueabi-g++

# modifications to linux.conf
QMAKE_AR                = arm-linux-gnueabi-ar cqs
QMAKE_OBJCOPY           = arm-linux-gnueabi-objcopy
QMAKE_NM                = arm-linux-gnueabi-nm -P
QMAKE_STRIP             = arm-linux-gnueabi-strip
load(qt_config)

我们需要根据我们安装得交叉编译工具去修改,由于我之前安装的是arm-linux-gcc 4.8.3

所以这里我们需要按照我们安装的交叉编译工具来修改QMAKE_CC、QMAKE_CXX等配置项:需要指定全路径。

#
# qmake configuration for building with arm-linux-gnueabi-g++
#

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS += -msoft-float -D__GCC_FLOAT_NOT_NEEDED -march=armv4t -mtune=arm920t
QMAKE_CXXFLAGS += -msoft-float -D__GCC_FLOAT_NOT_NEEDED -march=armv4t -mtune=arm920t

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

# modifications to g++.conf
QMAKE_CC                = /usr/local/arm/4.8.3/bin/arm-none-linux-gnueabi-gcc
QMAKE_CXX               = /usr/local/arm/4.8.3/bin/arm-none-linux-gnueabi-g++
QMAKE_LINK              = /usr/local/arm/4.8.3/bin/arm-none-linux-gnueabi-g++
QMAKE_LINK_SHLIB        = /usr/local/arm/4.8.3/bin/arm-none-linux-gnueabi-g++

# modifications to linux.conf
QMAKE_AR                = /usr/local/arm/4.8.3/bin/arm-none-linux-gnueabi-ar cqs
QMAKE_OBJCOPY           = /usr/local/arm/4.8.3/bin/arm-none-linux-gnueabi-objcopy
QMAKE_NM                = /usr/local/arm/4.8.3/bin/arm-none-linux-gnueabi-nm -P
QMAKE_STRIP             = /usr/local/arm/4.8.3/bin/arm-none-linux-gnueabi-strip
load(qt_config)

1.4 配置安装

1.4.1 CMake安装

CMake是一个跨平台的构建工具,其支持程度要好于qmake。CMake的配置更加灵活、强大,也更容易维护。如果是Qt6.0+需要安装CMake,否则忽略即可。

注:是一个比make更高级的编译配置工具,它可以根据不同平台、不同的编译器,生成相应的Makefile或者vcproj项目。

接着回到安装目录,安装CMake:

root@zhengyang:/work/sambashare# cd /work/sambashare/tools
root@zhengyang:/work/sambashare/tools# wget https://github.com/Kitware/CMake/releases/download/v3.21.2/cmake-3.21.2.tar.gz
root@zhengyang:/work/sambashare/tools# tar xf cmake-3.21.2.tar.gz
root@zhengyang:/work/sambashare/tools# cd cmake-3.21.2
root@zhengyang:/work/sambashare/tools/cmake-3.21.2# ./configure
root@zhengyang:/work/sambashare/tools/cmake-3.21.2# make && make install
root@zhengyang:/work/sambashare/tools/cmake-3.21.2# cd ..
root@zhengyang:/work/sambashare/tools# rm -rf cmake-3.21.2

这里我们没有指定安装路径,默认是安装到了 /usr/local/bin路径。

root@zhengyang:/work/sambashare/tools# ll  /usr/local/bin
总用量 47556
drwxr-xr-x  2 root root     4096 5月   7 13:45 ./
drwxr-xr-x 19 root root     4096 5月   7 13:48 ../
-rwxr-xr-x  1 root root 11319992 5月   7 13:45 ccmake*
-rwxr-xr-x  1 root root 11589232 5月   7 13:45 cmake*
-rwxr-xr-x  1 root root 12030672 5月   7 13:45 cpack*
-rwxr-xr-x  1 root root 13098200 5月   7 13:45 ctest*
-rwxr-xr-x  1 root root   230408 8月  27  2022 ffmpeg*
-rwxr-xr-x  1 root root   123424 8月  27  2022 ffplay*
-rwxr-xr-x  1 root root   139168 8月  27  2022 ffprobe*
-rwxr-xr-x  1 root root   136720 8月  27  2022 ffserver*
-rwxr-xr-x  1 root root     1568 8月  27  2022 sdl2-config*

1.4.2 tslib安装

要想Qt 支持触摸需要编译tslib ,以生成触摸相关插件。 tslib 多用于嵌入式系统中,是基本的触摸插件。在上一节linux设备树-LCD触摸屏设备驱动已经介绍了tslib的安装,这里不重复介绍了,当时我们将tslib安装到了ls /work/sambashare/drivers/tslib/tmp/路径下。

我们将其拷贝到/usr/local/tslib路径下:

root@zhengyang:/work/sambashare# ls drivers/tslib/tmp/
bin/     etc/     include/ lib/     share/
root@zhengyang:/work/sambashare# cp drivers/tslib/tmp/* /usr/local/tslib/ -rfd

1.4.3 Qt安装

接着回到qt安装目录:

root@zhengyang:/work/sambashare# cd tools/ qt-everywhere-opensource-src-5.0.0
root@zhengyang:/work/sambashare/tools/ qt-everywhere-opensource-src-5.0.0# sudo mkdir -p /usr/local/Qt5.12

接下来配置Qt, 在Qt的源码目录下有一个可执行程序 configure, 运行./configure --help 可以看到详细的配置选项。

为了操作方便,可以写一个脚本文件autoconfigure.sh,文容如下:

 

sudo ./configure -prefix /usr/local/Qt5.12 \
-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 \
--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 /usr/local/tslib/include \
-L /usr/local/tslib/lib 

 

 

 

 

 

 

 

 

 

 -I和-L分别指定头文件目录和库目录,在安装tslib生成的目录tmp中,这里提前将tmp目录复制到/usr/local/tslib中。

 

 赋予配置脚本autoconfigure.sh 可执行权限,然后执行

root@zhengyang:/work/sambashare/tools/ qt-everywhere-opensource-src-5.0.0# sudo apt-get install g++  #配置前请先安装g++,如已安装可忽略
root@zhengyang:/work/sambashare/tools/ qt-everywhere-opensource-src-5.0.0# chmod +x autoconfigure.sh
root@zhengyang:/work/sambashare/tools/ qt-everywhere-opensource-src-5.0.0# ./autoconfigure.sh 

 

配置脚本运行完成之后,就可以进行编译和安装了,大约需要十几到几十分钟:

root@zhengyang:/work/sambashare/tools/ qt-everywhere-opensource-src-5.0.0# make -j4
root@zhengyang:/work/sambashare/tools/ qt-everywhere-opensource-src-5.0.0# make install

 

 

二、根文件系统制作

三、QT应用程序测试

参考文章

[1]移植QT5.6到JZ2440

[2]一、搭建通用Arm平台的QT交叉编译环境

[3]嵌入式Linux下的Qt环境搭建

[4]嵌入式Linux--交叉编译安装Qt5.12.9

 

标签:qt,skip,GUI,work,Mini2440,linux,root,arm,QT6.5
From: https://www.cnblogs.com/zyly/p/17379338.html

相关文章

  • 软件测试|超好用超简单的Python GUI库——tkinter(十)
    前言上文我们介绍了tkinter的列表框处理,我们在日常生活中还会遇到组合框的情况,tkinter同样可以实现这个功能,下面我们来介绍一下tkinter如何实现组合框。Combobox控件上一篇文章,我们知道Listbox是一个供用户从列表项中选择相应条目的控件。但在有些情况下,比如列表的项目过多时,若使......
  • Heuristic-Guided Reinforcement Learning
    发表时间:2021(NeurIPS2021)文章要点:这篇文章提出了一个Heuristic-GuidedReinforcementLearning(HuRL)的框架,用domainknowledge或者offlinedata构建heuristic,将问题变成一个shorter-horizon的子问题,从而更容易解决。具体的,就是将原始的MDP变换成一个新的reward和gamma的M......
  • PyautoGui
     1importtime2importpyautogui34#Size(width=2560,height=1600)获取屏幕像素5pyautogui.size()67#Point(x=1595,y=907)获取当前鼠标坐标,返回x,y轴8x,y=pyautogui.position()9print(x,y)1011#查看该像素点是否在屏幕内,返回True/Fals......
  • Qt6.5编译记录
        Qt6.5的长期支持版释放了,就开始了再次的折腾。首先安装编译环境,官方文档的编译环境链接为:QtforWindows-BuildingfromSource|Qt6.5 可以看到,很清爽,只需要Cmake,Ninja和Python3,不再需要其他的了,而且都提供了链接(但是实际编译时,如果需要编译QtPDF,还是需要Node......
  • 基于MobileNet的人脸表情识别系统(MATLAB GUI版+原理详解)
    摘要:本篇博客介绍了基于MobileNet的人脸表情识别系统,支持图片识别、视频识别、摄像头识别等多种形式,通过GUI界面实现表情识别可视化展示。首先介绍了表情识别任务的背景与意义,总结近年来利用深度学习进行表情识别的相关技术和工作。在数据集选择上,本文选择了Fer2013和CK+两个数......
  • 基于深度神经网络的图像分类与训练系统(MATLAB GUI版,代码+图文详解)
    摘要:本博客详细介绍了基于深度神经网络的图像分类与训练系统的MATLAB实现代码,包括GUI界面和数据集,可选择模型进行图片分类,支持一键训练神经网络。首先介绍了基于GoogleNet、ResNet进行图像分类的背景、意义,系统研究现状及相关算法。然后展示了系统的界面演示效果,包括选择图片分......
  • 基于YOLOv4的目标检测系统(附MATLAB代码+GUI实现)
    摘要:本文介绍了一种MATLAB实现的目标检测系统代码,采用YOLOv4检测网络作为核心模型,用于训练和检测各种任务下的目标,并在GUI界面中对各种目标检测结果可视化。文章详细介绍了YOLOv4的实现过程,包括算法原理、MATLAB实现代码、训练数据集、训练过程和图形用户界面。在GUI界面中,用户......
  • GUID转换成16位、19位、22位唯一字符串
    ///<summary>///依据GUID获取16位的唯一字符串///<paramname=\"guid\"></param>///<returns></returns>publicstaticstringGuidTo16String(){longi=1;......
  • 2022CCPC Guilin Site E. Draw a triangle
    Drawatriangle题意:给定两点,求第三个整数点满足三点构成的非退化三角形面积最小分析:一开始看成了图论题,以为一直在卡精度(doge设\(A(x_1,y_1),B(x_2,y_2),C(x,y)\),则三角形面积由向量叉积求:\(2S=\vec{AB}×\vec{AC}\)\(\vec{AB}\)表示为\((x_2-x_1,y_2-y_......
  • imgui是什么?
    如果从事过C++Windows客户端开发,大家对MFC、Qt、DuiLib等各种DirectUI应该有了解,本篇给大家介绍一个超级轻量级的C++开源跨平台图形界面框架ImGUI.ImGUI主要用于游戏行业,所有的控件都需要手绘实现,当然性能也是满满的,毕竟是直接用dx/opengl来实现。参考:https://blog.csdn.net/ya......