为RK3568或RK3288开发板创建交叉编译环境{采用amd64的ubuntu系统配置交叉编译arm64开发环境}(保姆级包括安装QT)超详细记录版

为RK3568或RK3288开发板创建交叉编译环境{采用amd64的ubuntu系统配置交叉编译arm64开发环境}【保姆级包括安装QT】超详细记录版

  • Chapter1 为RK3568或RK3288开发板创建交叉编译环境{采用amd64的ubuntu系统配置交叉编译arm64开发环境}(保姆级包括安装QT)超详细记录版
    • 一. 安装QT程序
      • 1.这里下载qt5.9.6版本的.run (根据自己情况,下载合适版本的Qt安装包)
      • 2.我们放在Downloads下面
      • 3.此时我们在命令行使用./运行发现提示:
      • 4.缺少可执行的权限,我们在命令行输入:
      • 6.此时弹出QT安装程序
      • 7. 8. 9. 10.11.省略
      • 12.安装完毕
      • 13.安装交叉编译器以及配置环境
      • 14.编译QT源码,配置交叉编译环境
      • 15.配置QT交叉编译环境
  • Chapter2 RK3568开发笔记(七):在宿主机ubuntu上搭建Qt交叉编译开发环境,编译一个Demo,目标板运行Demo测试
  • Chapter3 ubuntu20.04交叉编译移植OpenCV4.7.0和QT5.12.12至ARM64位平台LKD3588(开发板为ubuntu20.04系统)(一)
  • Chapter4 ubuntu20.04交叉编译移植OpenCV4.7.0和QT5.12.12至ARM64位平台LKD3588(开发板为ubuntu20.04系统)(二)
  • Chapter5 ubuntu18.04交叉编译移植OpenCV4.70和QT5.12.12至ARM64位平台LKD3588(开发板为ubuntu22.04系统)(三)
  • Chapter6 QT开发学习4(远程调试 Qt 程序, rsync 方式 Qt 远程调试)
    • 2.5.1 rsync 方式 Qt 远程调试


为了不破解原有的用户环境,可以新建一个管理员用户,单独做验证。
在这里插入图片描述

在开发板上安装NFS客户端,执行

sudo apt-get install nfs-commonsudo apt-get install rsync

Chapter1 为RK3568或RK3288开发板创建交叉编译环境{采用amd64的ubuntu系统配置交叉编译arm64开发环境}(保姆级包括安装QT)超详细记录版

原文链接:https://blog.csdn.net/weixin_44277869/article/details/127338258

一. 安装QT程序

开发环境采用的是amd64 linux的系统,所以.run可以运行,我们在QT官网下载即可,版本自己选择即可,最好与后面要编译的qt对应起来

1.这里下载qt5.9.6版本的.run (根据自己情况,下载合适版本的Qt安装包)

在这里插入图片描述

2.我们放在Downloads下面

在这里插入图片描述

3.此时我们在命令行使用./运行发现提示:

在这里插入图片描述

4.缺少可执行的权限,我们在命令行输入:

sudo chmod u+x qt-opensource-linux-x64-5.9.6.run

5.执行后该文件即可使用./直接打开,在命令行输入:

./qt-opensource-linux-x64-5.9.6.run

6.此时弹出QT安装程序

开始安装QT
在这里插入图片描述

7. 8. 9. 10.11.省略

12.安装完毕

在这里插入图片描述

13.安装交叉编译器以及配置环境

这里我直接借鉴之前老哥的网盘:

链接:https://pan.baidu.com/s/1mnpFepFY-rOlwWd3QbYZiw 提取码:5566
在这里插入图片描述

(1)将两个交叉编译器文件放在Downloads下面
(2)在命令行输入:

sudo tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar -C /opt/
sudo tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar -C /opt/

(3)解压完毕
在这里插入图片描述

(4)配置系统的环境变量,这里有几种方法:
直接用vim修改:

sudo gedit ~/.bashrc

在这里插入图片描述

直接打开修改:在home下打开显示隐藏文件:
gedit修改:

sudo gedit ~/.bashrc

在这里插入图片描述

(5)添加交叉编译器环境,路径在:/opt/

PATH=$PATH:/opt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/binPATH=$PATH:/opt/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin

在这里插入图片描述

(6)配置后使得全局变量生效,命令行输入:

source ~/.bashrc

(7)验证一下编译器是否已经安装好,命令行输入:

aarch64-linux-gnu-gcc -v
arm-linux-gnueabihf-gcc -v

在这里插入图片描述
在这里插入图片描述

都显示版本号说明没有问题
(8)创建一个简单的c程序,用arm64编译器编译一下放到板子上运行

#include <stdio.h>
int main(int argc, char **argv)
{printf("Hello, you do it succeed!!!\n");return 0;
}

(9)这个hello.c建议放在/home/你的用户名/下面的文件夹内

(10)这里通过直接在文件管理器内右键就可创建文件夹,至于hello.c的创建只需要在ctest根目录下输入:

touch hello.c

直接打开并将代码放入保存即可

(11)对hello.c进行aarch64编译,如下图两步进行(PS: -o后面填入生成的可执行名字即可)
在这里插入图片描述

(12)生成了可执行文件的类型是aarch64,也就是arm64版本的可执行程序了,可以直接放到板子上跑了
在这里插入图片描述

(13)如下图所示板子上跑成功了,说明arm64交叉编译器已经安装成功
在这里插入图片描述

14.编译QT源码,配置交叉编译环境

在这里插入图片描述

(1)对QT的源码包进行解压,输入:

sudo tar xvf qt-everywhere-src-5.12.10.tar.xz
cd qt-everywhere-src-5.12.10

(2)进入到qtbase/mkspekcs/目录下,在该目录下,找到一个相似的工具链,cp一份并修改为指定的工具链(即在QT下添加自己的指定的平台)。然后输入:

sudo cp -a linux-aarch64-gnu-g++/ aarch64-linux-gnu-g++/

在这里插入图片描述

(3)进入到新建的目录aarch64-linux-gnu-g++文件夹下,修改qmake.conf的内容

输入:

gedit qmake.conf

(4)将下面的内容添加进去

# modifications to g++.conf
QMAKE_CC                = /opt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc 
QMAKE_CXX               = /opt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ 
QMAKE_LINK              = /opt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ 
QMAKE_LINK_SHLIB        = /opt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ # modifications to linux.conf
QMAKE_AR                = /opt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-ar cqs
QMAKE_OBJCOPY           = /opt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-objcopy
QMAKE_NM                = /opt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc-nm  -P
QMAKE_STRIP             = /opt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-strip
load(qt_config)

即指定的交叉编译工具链。

(5)如图所示,保存该文件
在这里插入图片描述

(6)保存过后需要进入到刚才解压的qt文件的根目录下:
在这里插入图片描述

创建build文件夹:
在这里插入图片描述

(7)进入build文件夹下,创建build.sh
在这里插入图片描述

(8)编辑build.sh文件,加入下面内容:

../configure \
-verbose \
-opensource \
-release \
-shared \
-confirm-license \
-make libs \
-nomake tests \
-nomake examples \
-skip qtmacextras \
-skip qtandroidextras \
-no-opengl \
-xplatform aarch64-linux-gnu-g++ \
-prefix /opt/qt-5.12.X-linux-aarch64-gcc

在这里插入图片描述

(9)build.sh保存后需要给build.sh执行权限:

sudo chmod +x build.sh

在这里插入图片描述

(10)安装编译所依赖的库,能装的都装一下,基础的一定要安装完成

基础的编译环境:
sudo apt-get build-dep qt5-default
sudo apt-get install libxcb-xinerama0-dev
sudo apt-get install build-essential perl python git
Libxcb:
sudo apt-get install ‘^libxcb.*-dev’ libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev
OpenGL:
sudo apt-get install build-essential
sudo apt-get install libgl1-mesa-dev
sudo apt-get install libglu1-mesa-dev
sudo apt-get install libegl1-mesa-dev
sudo apt-get install freeglut3-dev
Qt WebKit:
sudo apt-get install flex bison gperf libicu-dev libxslt-dev ruby
Qt WebEngine:
sudo apt-get install libssl-dev libxcursor-dev libxcomposite-dev libxdamage-dev libxrandr-dev libdbus-1-dev libfontconfig1-dev libcap-dev libxtst-dev libpulse-dev libudev-dev libpci-dev libnss3-dev libasound2-dev libxss-dev libegl1-mesa-dev gperf bison
Qt Multimedia:
sudo apt-get install libasound2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev
QDoc Documentation Generator Tool:
sudo apt install libclang-6.0-dev llvm-6.0

(11)安装完所需环境之后就可以执行build.sh来创建Makefile进行编译:
在这里插入图片描述

(12)执行:

make

在这里插入图片描述

(13)执行:

sudo make install

在编译完成后执行 make install 会将qt库安装到 -prefix 指定的目录下。

在这里插入图片描述

15.配置QT交叉编译环境

(1)打开已经安装好的QT和项目
在这里插入图片描述

(2)配置其aarch64位编译器,在Compilers中点击Add我们之前安装并配置好的交叉编译链GCC,配置路径,名称要区别开
在这里插入图片描述

(3)在Qt Versions里面配置已经编译好的qmake,位置在opt下面
在这里插入图片描述

(4)添加Kit,配置如下图所示,Name可以自定义
在这里插入图片描述

(5)点击ok之后在Projects里点击刚配置好的Kits,然后选择我们的环境,选择Release模式,点击build即可
在这里插入图片描述

(6)Build之后显示绿色已经build成功
在这里插入图片描述

(7)看到已经build好的项目
在这里插入图片描述

(8)点击进去之后看到有一个可执行文件即可,拷贝到板子上就可以用了,根据不同的程序需要特殊的全局变量的设置,相关库lib的放置等,需要在home下.bashrc文件里添加,并且使用source生效即可

在这里插入图片描述

Chapter2 RK3568开发笔记(七):在宿主机ubuntu上搭建Qt交叉编译开发环境,编译一个Demo,目标板运行Demo测试

https://blog.csdn.net/qq21497936/article/details/132733901

Chapter3 ubuntu20.04交叉编译移植OpenCV4.7.0和QT5.12.12至ARM64位平台LKD3588(开发板为ubuntu20.04系统)(一)

https://blog.csdn.net/weixin_41392061/article/details/129731169?spm=1001.2101.3001.10138.16

Chapter4 ubuntu20.04交叉编译移植OpenCV4.7.0和QT5.12.12至ARM64位平台LKD3588(开发板为ubuntu20.04系统)(二)

https://blog.csdn.net/weixin_41392061/article/details/129735529?spm=1001.2101.3001.10138.12

Chapter5 ubuntu18.04交叉编译移植OpenCV4.70和QT5.12.12至ARM64位平台LKD3588(开发板为ubuntu22.04系统)(三)

https://blog.csdn.net/weixin_41392061/article/details/129798281?spm=1001.2101.3001.10138.11

远程调试Qt程序
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Chapter6 QT开发学习4(远程调试 Qt 程序, rsync 方式 Qt 远程调试)

原文链接:https://blog.csdn.net/qq_42700289/article/details/129540132
在这里插入图片描述

2.5.1 rsync 方式 Qt 远程调试

在 Qt Creator 中默认情况下,会使用 sftp 或 rsync 发送程序到板卡。由于正点原子 I.MX6
U 出厂 Qt 文件系统(文件系统 V1.9 及之后的)里有 rsync 指令,因此可以很方便地使用此方
式进行 Qt 远程调试。首先我们要确认下当前出厂文件系统版本号,在出厂系统执行以下指令。
cat /etc/version
在这里插入图片描述

图 2.5.1 1 查看当前文件系统版本

或者直接执行 rsync 指令,也可以查看是否支持 rsync,如下图所示就是支持 rsync。
rsync

在这里插入图片描述

图 2.5.1 2 rsync 指令

如果文件系统不是 V1.9 的,或者不支持 rsync 指令,请去网盘下载最新的出厂系统,使用
最新的系统来进行。如果不想更新文件系统,可以看 2.5.2 小节无 rsync 方式 Qt 远程调试。这
里推荐使用最新系统,会方便搭建远程调试环境。

打开 Qt creator 里的工具 -> 选项。
在这里插入图片描述

图 2.5.1 3 打开 Qt creator 的工具选项

如图所示添加 Generic Linux Device 设备。

在这里插入图片描述

图 2.5.1 4 添加 Generic Linux Device 设备

依次填写配置名称、开发板 IP 地址和用户名。这里我设置名称为 IMX6U-rsync,开发板接
网线直连电脑再执行 ifconfig 指令得到开发板 IP 地址为 192.168.1.219,出厂系统用户名为 root。
开发板 IP 地址请根据自己实际情况填写。

在这里插入图片描述

图 2.5.1 5 添加 Generic Linux Device 设备相关信息

点击下一步。
在这里插入图片描述

图 2.5.1 6 点击下一步

点击完成。

在这里插入图片描述

图 2.5.1 7 点击完成
这里会测试连接,如果失败请检查下 Ubuntu 是否开启了 FTP 服务并关闭防火墙,确保 Ub
untu 和开发板出厂系统能 ping 通。

在这里插入图片描述

图 2.5.1 8 测试设备连接

设置验证类型为 Default 并应用保存。

在这里插入图片描述

图 2.5.1 9 设置验证类型为 Default

至此,我们的设备信息及验证方式都设置好了,接下来设置 Kits。依次打开工具 -> 选项,
设置 Kits 配置。

其中,名称我们修改成 IMX6U-rsync,C++选择 2.3 小节设置的 ATK-I.MX6U-GCC,Qt ve
rsion 选择 2.3 小节里配置好的 ATK-I.MX6U Qt 5.12.9,Qt mkspec 填写 linux-oe-g++。其他具
体配置参考下图。

在这里插入图片描述

图 2.5.1 10 设置 Kits 配置

接下来就是验证 Qt 远程调试,参考 2.4 小节的方法创建一个 test 项目,选择使用刚刚创建
的 IMX6U-rsync 的 Kits 套件。

在这里插入图片描述

图 2.5.1 11 创建 test 项目并选择 Kits

选择使用 IMX6U-rsync 来调试。

在这里插入图片描述

图 2.5.1 12 选择调试方式

对项目右键,在菜单栏中选择构建,再运行程序。
在这里插入图片描述

图 2.5.1 13 构建并运行项目

在应用程序输出栏可以看到此程序已运行,在开发板 LCD 屏幕上可以看到一片空白,这是
因为我们运行的 test 是空白项目。至此,Qt 远程调试验证结束。

在这里插入图片描述

图 2.5.1 14 程序运行,开发板屏幕出现空白窗口

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

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

相关文章

picgo+gitee图床配置

node.js安装 刚开始顺着picgo操作,直接跳转到了node.js官网 下载的时候直接 Next,然后可以自定义安装路径,我的安装路径是C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Node.js 然后再在安装路径的根目录下新建两个文件夹,nodecache 和 nodeglobal, 如图所示:…

C++(Qt)-GIS开发-简易瓦片地图下载器

Qt-GIS开发-简易瓦片地图下载器 文章目录 Qt-GIS开发-简易瓦片地图下载器1、概述2、安装openssl3、实现效果4、主要代码4.1 算法函数4.2 瓦片地图下载url拼接4.3 多线程下载 5、源码地址6、参考 更多精彩内容&#x1f449;个人内容分类汇总 &#x1f448;&#x1f449;GIS开发 …

全面解析 TypeScript 泛型的二三事

2024年了相信大家都已经在日常开发的过程中使用上了 TypeScript 了。TypeScript 增强了代码可靠性和可维护性&#xff0c;确保减少运行时错误并提高开发人员的工作效率。 TypeScript 通过类型声明 使得 javascript 拥有了强类型校验。而泛型的是类型声明中最重要的一环&#x…

06浅谈大语言模型可调节参数TopP和TopK

浅谈大模型参数TopP和TopK 大语言模型中的temperature、top_p和top_k参数是用来控制模型生成文本时的随机性和创造性的。下面分享一下topP和topK两个参数的意义及逻辑&#xff1b; top K&#xff08;Top-K Sampling&#xff09; 作用&#xff1a;只从模型认为最可能的k个词中选…

时间、查找、打包、行过滤与指令的运行——linux指令学习(二)

前言&#xff1a;本节内容标题虽然为指令&#xff0c;但是并不只是讲指令&#xff0c; 更多的是和指令相关的一些原理性的东西。 如果友友只想要查一查某个指令的用法&#xff0c; 很抱歉&#xff0c; 本节不是那种带有字典性质的文章。但是如果友友是想要来学习的&#xff0c;…

Amesim中删除计算结果保存计算文件

前言 Amesim在工程应用中计算的结果文件有时会很大&#xff0c;为了节省电脑存储空间&#xff0c;项目结束后可以将计算结果删除进行保存以存档。 操作步骤 具体操作步骤如下&#xff1a; Step1&#xff1a;在①File下打开&#xff08;Open&#xff09;需要删除计算结果的项…

DAMA学习笔记(四)-数据建模与设计

1.引言 数据建模是发现、分析和确定数据需求的过程&#xff0c;用一种称为数据模型的精确形式表示和传递这些数据需求。建模过程中要求组织发现并记录数据组合的方式。数据常见的模式: 关系模式、多维模式、面向对象模式、 事实模式、时间序列模式和NoSQL模式。按照描述详细程度…

第1节、基于太阳能的环境监测系统——MPPT充电板

一、更新时间&#xff1a; 本篇文章更新于&#xff1a;2024年7月6日23:33:30 二、内容简介&#xff1a; 整体系统使用太阳能板为锂电池充电和系统供电&#xff0c;天黑后锂电池为系统供电&#xff0c;本节主要介绍基于CN3722的MPPT太阳能充电模块&#xff0c;这块主要是硬件…

AE的首选项设置

打开AE,点击 编辑->首选项->常规 显示 点击“所有关键帧”&#xff0c;这样显示路径就会显示所有关键帧 导入 将序列素材改为25帧每秒&#xff0c;作为以后制作的默认 媒体和磁盘缓存 根据个人需求选择磁盘缓存的文件夹&#xff0c;如果d盘空间充足&#xff0c;就改成…

Git中两个开发分支merge的原理

一 分支合并 1.1 原理 分支合并&#xff1a;就是将A分支修改后且commit的内容&#xff0c;合并到B分支&#xff0c;这些修改且提交的内容和B分支对应的内容和位置进行比较&#xff1a; 1.不一样的话&#xff0c;提示冲突&#xff0c;需要人工干预。 2.一样的话&#xff0c;…

网页封装APP:让您的网站变身移动应用

网页封装APP&#xff1a;让您的网站变身移动应用 随着移动设备的普及&#xff0c;越来越多的人开始使用移动设备浏览网站。但是&#xff0c;传统的网站设计并不适合移动设备的屏幕尺寸和交互方式&#xff0c;这导致了用户体验不佳和流失。 有没有办法让您的网站变身移动应用&…

14-43 剑和诗人17 - ActiveRAG之主动学习

​​​​​ 大型语言模型 (LLM) 的出现开启了对话式 AI 的新时代。这些模型可以生成非常像人类的文本&#xff0c;并且比以往更好地进行对话。然而&#xff0c;它们在仅依赖预训练知识方面仍然面临限制。为了提高推理能力和准确性&#xff0c;LLM 需要能够整合外部知识。 检索…

每日一题~oj(贪心)

对于位置 i来说&#xff0c;如果 不选她&#xff0c;那她的贡献是 vali-1 *2&#xff0c;如果选他 &#xff0c;那么她的贡献是 ai. 每一个数的贡献 是基于前一个数的贡献 来计算的。只要保证这个数的前一个数的贡献是最优的&#xff0c;那么以此类推下去&#xff0c;整体的val…

AI让大龄程序员重新焕发活力

AI是在帮助开发者还是取代他们&#xff1f; 在软件开发领域&#xff0c;生成式人工智能&#xff08;AIGC&#xff09;正在改变开发者的工作方式。无论是代码生成、错误检测还是自动化测试&#xff0c;AI工具正在成为开发者的得力助手。然而&#xff0c;这也引发了对开发者职业…

华为云简介

前言 华为云是华为的云服务品牌&#xff0c;将华为30多年在ICT领域的技术积累和产品解决方案开放给客户&#xff0c;致力于提供稳定可靠、安全可信、可持续创新的云服务&#xff0c;赋能应用、使能数据、做智能世界的“黑土地”&#xff0c;推进实现“用得起、用得好、用得放心…

优化视频编辑体验:精准高效视频分割,降低误差率,显著提升处理精度与效率

在数字创意飞速发展的今天&#xff0c;视频编辑已成为展现创意与才华的重要舞台。然而&#xff0c;面对海量的视频素材和复杂的编辑需求&#xff0c;如何快速、准确地完成视频分割&#xff0c;成为了每一个视频编辑师心中的难题。今天&#xff0c;我们荣幸地向您介绍一款颠覆性…

摸鱼大数据——Spark SQL——DataFrame详解一

1.DataFrame基本介绍 DataFrame表示的是一个二维的表。二维表&#xff0c;必然存在行、列等表结构描述信息​表结构描述信息(元数据Schema): StructType对象字段: StructField对象&#xff0c;可以描述字段名称、字段数据类型、是否可以为空行: Row对象列: Column对象&#xff…

Rejetto HFS 服务器存在严重漏洞受到攻击

AhnLab 报告称 &#xff0c;黑客正在针对旧版本的 Rejetto HTTP 文件服务器 (HFS) 注入恶意软件和加密货币挖矿程序。 然而&#xff0c;由于存在错误&#xff0c; Rejetto 警告用户不要使用 2.3 至 2.4 版本。 2.3m 版本在个人、小型团队、教育机构和测试网络文件共享的开发…

力扣 第 134 场双周赛 解题报告 | 珂学家

前言 题解 T1/T3是环形的处理技巧&#xff0c;这边可以double数组(更准确地讲&#xff0c;添加一个合适的小尾巴). T4是典题&#xff0c;前不久周赛刚考过&#xff0c;是一道结论题&#xff0c;也可以借助数据结构处理。 T1. 交替组 I 和T3一起讲 T2. 与敌人战斗后的最大分数…

生产调度:flowshop问题数学建模

接上一篇文章&#xff0c;在了解生产调度问题的背景和基本概念之后&#xff0c;我想先从比较基础的 flowshop和 jobshop 数学模型入手&#xff0c;理解实际调度过程中的问题求解思路。这一篇文章主要面向 flowshop 问题进行数学建模&#xff0c;对于这类比较经典的问题&#xf…