米尔NXP i.MX 93开发板的Qt开发指南

1. 概述

Qt 是一个跨平台的图形应用开发框架,被应用在不同尺寸设备和平台上,同时提供不同版权版本供用户选择。米尔 NXP i.MX 93 开发板(MYD-LMX9X开发板)使用 Qt6.5 版本进行应用开发。在 Qt 应用开发中,推荐使用 QtCreator 集成开发环境,可以在 Linux PC 下开发 Qt 应用,自动化地交叉编译为开发板的 ARM 架构。 

本章使用 Yocto 构建的 SDK 工具作为交叉编译系统,配合 QtCreator 快速开发图形类应用程序。

2. 硬件资源 

  • 米尔 NXP i.MX 93 开发板(MYD-LMX9X开发板)

3. 软件资源 

  • ubuntu 20.04 64bit

  • Qt6.5

  • 交叉编译链

4. 环境准备 

需要 ubuntu 桌面系统,后续均在 ubuntu 20.04 64bit 版本下操作,桌面系统请自行安装。

5. 安装Qt6.5

从Qt下载官网https://download.qt.io/archive/online_installers/4.5/下载 qt-unified-linux-x64-4.5.2-online.run 安装包。

  • 安装 Qt 所需要的库

在安装 QtCreator 之前需要对主机的环境进行配置,请安装下列资源包

sudo apt-get update
sudo apt install --reinstall libxcb-xinerama0
sudo apt install cmake build-essential libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev cmake

  • 将安装包放到 Ubuntu 下运行

sudo chmod 777 qt-unified-linux-x64-4.5.2-online.run
./qt-unified-linux-x64-4.5.2-online.run --mirror https://mirrors.tuna.tsinghua.edu.cn/qt

  • 登录

运行命令后进入安装界面,填入账号,如若没注册需要先自行注册。

图5-1. 输入账号密码

  •       选择

     开发者可选择个人开发者。

图5-2. 选择开发者

  • 禁止发送

选择禁止发送反馈内容。

图5-3. 选择禁止发送

  • 选择安装路径

选择安装路径,建议安装在目录/opt 下。

图5-4. 安装路径

  • 选择安装内容

因为我们需要安装6.5版本,所以需要勾选以下内容。

图5-5. 选择安装内容

  • 安装

选择好安装内容好连续点击下一步到安装页面。

图5-6. 等待安装完成

6. 配置交叉编译环境 

1)打开 QtCreator,请从终端执行"qtcreator.sh"来启动 QtCreator,参考如下:

2)如果运行失败则需要安装插件,命令如下

3)再次运行成功,出现选项对话框,点击 Edit ,继续点击 Preferences ,在 Kits 栏选择 Compilers 标签,如下图所示。

图6-1. 配置Compilers

4)点击右侧 Add ,弹出下拉列表后,选择 GCC->C++ ,在下面填写"Name"为"LMX9X- G++","Compiler path"点击旁边的"Browse.."按钮选择到 aarch64-poky-linux-g++ 的路径,例子中的路径是"/opt/fsl-imx-xwayland/6.1-mickledore/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-g++"。(此为米尔提供的编译链,详情请查看《MYD-LMX9X_Linux软件开发指南》2.2章节)填写完成后,点击"Apply"

图6-2. 配置GCC

5)选择"Debuggers"标签,在右侧点击"Add",在name处输入"93-gdb",在path选择路径为/opt/fsl-imx-xwayland/6.1-mickledore/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-gdb,填写完成后点击"Apply",如图6-3。

图6-3. 配置Debugger

6)选择"Qt Version"标签,在右侧点击"Add",会弹出 qmake 路径选择对话框,这里以"/opt/fsl-imx-xwayland/6.1-mickledore/sysroots/x86_64-pokysdk-linux/usr/bin/qmake"为例子。选择"qmake"文件后,点击"Open"按钮。"Version name"改为"Qt %{Qt:Version} (LM93-sytem)"。然后点击"Apply"按钮。

图6-4. 选择qmake

7) 选择左侧"Device",点击右边的"Add"按钮,填写内容"Name"为"MYIR-LM93-Board","Host name"为开发板的 IP 地址(可以暂时填写任意一个址),"Username"为"root",然后击"Apply"。(此项为可选项)

图6-5. 选择开发板

8) 点击左侧"Build & Run"回到"Kits"标签下,"Name"设置为"LM93-dev-kit","Device"选择"MYD-LM93-Board"选项了。"Sysroot"选择目标设备的系统目录,这里以"/opt/fsl-imx-xwayland/6.1-mickledore/sysroots/x86_64-pokysdk-linux"例。"Compiler"选择之前配置的名称"93-GCC","Qt version"选择之前配置的名称"Qt6.5.0 (LM93-System)","Qtmkspec"填写为"linux-oe-g++"。其它默认即可,最后点击"Apply"和"OK"按钮。

图6-6. Kits配置

9)将 MXAPP-Qt6.tar.gz 拷贝到 Ubuntu 下的一个工作目录中并解压出源代码。配置为相应的编译工具套件,就可以编译此例程。在菜单栏选择"File"->"Open File or Project",在打开的对话框中,浏览到"mxcpp"例程的目录下,选择"mxcpp.pro"文件,点击"Open"按钮。项目打开后,在左侧菜单列中,选择"Projects"图标,右侧界面切换为 manage kits 管理界面,在"Build & Run"标签下,选择"LM93"选项的 kit,这样项目就会使用"LM93 "的相关配置 kit 构建应用。然后右键选择"mxapp2"点击 Build 。

图6-7. 开始编译

图6-8. 编译完成

QtCreator 构建 mxapp 项目后,编译好的二进制文件存放在指定的目录下。然后将 mxapp 文件拷贝到开发板下运行即可

图6-9. 保存路径

7. 参考资料

  • 下载桌面版Ubuntu

https://ubuntu.com/download/desktop

  • QT开发指导

Qt | Tools for Each Stage of Software Development Lifecycle

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/849515.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NSSCTF CRYPTO MISC题解(一)

陇剑杯 2021刷题记录_[陇剑杯 2021]签到-CSDN博客 [陇剑杯 2021]签到 下载附件压缩包,解压后得到 后缀为.pcpang,为流量包,流量分析,使用wireshark打开 {NSSCTF} [陇剑杯 2021]签到 详解-CSDN博客 选择统计里面的协议分级 发现流…

Vxe UI vxe-table 实现自定义列拖拽,列拖拽排序功能

Vxe UI vue vxe-table 实现自定义列拖拽&#xff0c;列拖拽排序功能 开启自定义列 vxe-toolbar 工具栏&#xff0c;通过 custom 启用后就可以开启自定义列功能 <template><div><vxe-toolbar ref"toolbarRef" custom></vxe-toolbar><vx…

【java基础】内部类

1、 非静态成员内部类可以访问所在类的全部方法和对象&#xff08;就相当于一个对象方法&#xff08;属于对象阶层和非静态方法同时加载在类加载之后&#xff09;&#xff09; 2、非静态成员内部类无法在该类&#xff08;就是非静态成员内部类所在的类&#xff09;的静态方法中…

人类的深度学习与机器的深度学习不同

人类的深度学习和机器的深度学习存在一些重要的区别&#xff1a; 人类的深度学习是自主进行的&#xff0c;无需明确编程。我们可以通过观察周围环境、与他人互动和实践来不断学习和适应&#xff0c;人类是具有意识和自我意识的智能体&#xff0c;能够理解和处理抽象概念&#x…

Python - 获取文件行数

看了很多教程&#xff0c;使用 readlines() 读取感觉效率比较低 这里我使用 Python 调用 wc -l 命令 PS : 这个命令存在一个小的可能的不一致是&#xff0c;如果文件最后一行没有换行符&#xff0c;则这一行不会被统计 import osfile_path /Users/user/Documents/happy.md…

一个程序员的牢狱生涯(55)改判

星期二 改判 我在‘赵老大’的号子里待到快到十点的时候,赵老大才送我回了自己的号子。 回到号子里后,我把‘赵老大’给我的烟又递给了头铺,头铺爽快地拿过去,从中抽出两根烟递给我,让我晚上站班的时候抽,并告诉我打火机就放在枕头边,到时候自己取就行。 晚上我和老杨还…

MS1112驱动开发

作者简介&#xff1a; 一个平凡而乐于分享的小比特&#xff0c;中南民族大学通信工程专业研究生在读&#xff0c;研究方向无线联邦学习 擅长领域&#xff1a;驱动开发&#xff0c;嵌入式软件开发&#xff0c;BSP开发 作者主页&#xff1a;一个平凡而乐于分享的小比特的个人主页…

java版B/S架构UWB人员定位系统源码spring boot+vue技术架构uwb定位装置-工业级UWB室内定位系统源码

java版B/S架构UWB人员定位系统源码spring bootvue技术架构uwb定位装置-工业级UWB室内定位系统源码 本套系统运用UWB定位技术&#xff0c;开发的高精度人员定位系统&#xff0c;通过独特的射频处理&#xff0c;配合先进的位置算法&#xff0c;可以有效计算复杂环境下的人员与物…

vue2中封装图片上传获取方法类(针对后端返回的数据不是图片链接,只是图片编号)

在Vue 2中实现商品列表中带有图片编号&#xff0c;并将返回的图片插入到商品列表中&#xff0c;可以通过以下步骤完成&#xff1a; 在Vue组件的data函数中定义商品列表和图片URL数组。 创建一个方法来获取每个商品的图片URL。 使用v-for指令在模板中遍历商品列表&#xff0c;并…

DNS解析失败是什么意思?DNS解析状态异常怎么处理?

DNS解析负责将简单易记的域名翻译成计算机能够识别的IP地址&#xff0c;从而实现通过域名访问网站服务器的目的&#xff0c;是网络通信中的重要环节。然而在实际业务场景中&#xff0c;我们经常会遇到DNS解析失败的情况&#xff0c;导致用户无法正常访问网站&#xff0c;或者访…

自动驾驶仿真(高速道路)LaneKeeping

前言 A high-level decision agent trained by deep reinforcement learning (DRL) performs quantitative interpretation of behavioral planning performed in an autonomous driving (AD) highway simulation. The framework relies on the calculation of SHAP values an…

流批一体计算引擎-10-[Flink]中的常用算子和DataStream转换

pyflink 处理 kafka数据 1 DataStream API 示例代码 从非空集合中读取数据&#xff0c;并将结果写入本地文件系统。 from pyflink.common.serialization import Encoder from pyflink.common.typeinfo import Types from pyflink.datastream import StreamExecutionEnviron…

Python类详解

目录 1. 类的基本概念 2.定义类 3.创建对象 4. 继承 5. 多态性 6. 特殊方法 7. 类属性与实例属性 8.总结 Python 类是面向对象编程的核心概念&#xff0c;它允许用户定义自己的数据结构和操作这些数据的方法。类是一种将数据&#xff08;属性&#xff09;和操作这些数据…

[网鼎杯 2020 青龙组]jocker

运行程序,发现是要我们自己输入 那么肯定是拿到enc慢慢还原 32位,无壳 进来就红一下报错 这里可以看见长度为24 动调一下看看 这里进行了大量的异或 这里是对地址开始的硬编码进行异或,从而达到smc的效果 所以你也可以发现在进行这一步操作之前 encry函数全是报错 你点开…

数据库工具navicat

1、运行 navicat150_premium_cs_x64.exe 安装程序安装 navicat&#xff1b; 2、安装完成后不要打开 navicat&#xff0c;先点击运行 Navicat Keygen Patch v5.6.0 DFoX.exe 注册机程序&#xff1b; 3、运行 Navicat Keygen Patch v5.6.0 DFoX.exe 后&#xff0c;点击 1&#…

黄金猛涨周大福却狂跌600亿搬厂裁员,年轻人血脉觉醒?

今年以来&#xff0c;有两样东西一直被吃瓜群众们津津乐道&#xff0c;一是AI的进化速度&#xff0c;二是黄金涨价的速度&#xff0c;并且时常霸占社交媒体热搜。‍‍‍‍‍‍‍‍‍ 尤其是黄金市场&#xff0c;更是一路上涨&#xff0c;快窜出天际了&#xff0c;不少吃瓜群众…

[CLIP] Learning Transferable Visual Models From Natural Language Supervision

通过在4亿图像/文本对上训练文字和图片的匹配关系来预训练网络&#xff0c;可以学习到SOTA的图像特征。预训练模型可以用于下游任务的零样本学习 ​​​​​​​ ​​​​​​​ 1、网络结构 1&#xff09;simplified version of ConVIRT 2&#xff09;linear …

使用Docker运行不同版本的Node.js

使用Docker运行不同版本的Node.js 目录 使用Docker运行不同版本的Node.js 一、Docker概述 二、Node.js环境简介 三、使用Docker运行不同版本的Node.js 四、高级操作与技巧 五、总结与最佳实践 一、Docker概述 1.1 定义与核心概念 Docker是一种开源的应用容器引擎,它允许…

容器是什么?

概念 容器可以被看作是一种轻量级的虚拟化技术。与传统虚拟化技术相比&#xff0c;容器不需要为每个应用程序提供单独的操作系统&#xff0c;它们共享宿主机的操作系统内核。这使得容器更加轻便和高效。 想象一下&#xff0c;容器就像是一艘艘可以在海洋中独立航行的货轮&…

麒麟v10系统arm64架构openssh9.7p1的rpm包

制作openssh 说明 理论上制作的多个rpm在arm64架构&#xff08;aarch64&#xff09;都适用 系统信息&#xff1a;4.19.90-17.ky10.aarch64 GNU/Linux 升级前备份好文件/etc/ssh、/etc/pam.d等以及开启telnet 升级后确认正常后关闭telnet 在之前制作过openssh-9.5p1基础上继续…