全志H616交叉编译,orangepi-zero2

news2024/11/22 20:30:17

文章目录

交叉编译是什么

交叉编译:是指一个平台编译好的可执行文件,放到另一个平台去运行例如51单片机利用keil编程这就是一个交叉编译,使用keil编译之后产生的.hex文件再利用某些工具上传到stc89c51单片机上,就可以运行我我们的51代码

换位到Linux上,我们在虚拟机上gcc好一个文件会产生一个.a.out文件,我们将.a.out文件放到ARM-Linux平台上去执行,就是Linux的交叉编译,为什么不直接在ARM-Linux平台直接编译?搞这么麻烦?

为什么需要交叉编译?

1、成本问题,正真去公司开发并不像是学习一样那样高的ARM-Linux配置,都不足以安装gcc编译工具,或者安装好了没法编译运行,资源匮乏,那么交叉编译就诞生了。

2、树莓派是不是就不需要交叉编译?
错。也要。
树莓派有时又是因为目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。操作系统也是代码,也要编译!

平台运行需要两样至少东西:bootloader(启动引导代码)以及操作系统核心

宿主机和目标机

宿主机(host) :编辑和编译程序的平台,一般是基于X86的PC机,通常也被称为主机。(pc)
目标机(target):用户开发的系统,通常都是非X86平台。host编译得到的可执行代码在target上运行。(全志、树莓派,等等)

所需工具

交叉编译是需要工具的,如51单片机需要keil软件编写一样,注意工具的意义是将宿主机的代码编译成可以运行在目标及代码的工具。
软件下载连接
找到gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz就是我们需要的交叉编译工具
在这里插入图片描述
下好,搞到自己的虚拟机上。
我用共享内存直接cp到工作目录的
在这里插入图片描述

解压编译工具

tar -xvf  gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz

-x 解压
-v 显示进度
-f 选择文件

进入目录

cd gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/
cd bin

在这里插入图片描述
标红的文件aarch64-none-linux-gnu-gcc就是全志交叉的交叉编译工具。

接下来

 pwd获得路径
echo $PATH 获得当前环境变量的值

临时有效,配置环境变量(切换终端无效)

PATH 环境变量
export PATH=$PATH$:{你pwm出来的路径}

永久有效,配置环境变量

修改工作目录下的.bashrc 隐藏文件,配置命令终端的

 vi /home/shunge/.bashrc 

在文件最后一行加入:

export PATH=$PATH$:{你pwm出来的路径}

加载配置文件,马上生效配置。

source /home/shunge/.bashrc

查看版本

aarch64-none-linux-gnu-gcc -v

在这里插入图片描述

大功告成开始测试

随便编写一个demo
在这里插入图片描述
编好之后使用编译工具去编译

 aarch64-none-linux-gnu-gcc demo1.c

在这里插入图片描述
发现在本机上编译好出现了.a.out文件运行提示错误,因为此时文件已经成兼容orangepi的文件了,无法在pc端运行

cp demo1.c demo2.c	

分别用俩个gcc进行编译,一个是系统gcc,一个是刚刚下好的。
在这里插入图片描述
接着如下操作:

aarch64-none-linux-gnu-gcc demo1.c -o quanzhi
gcc demo2.c -o pc

在这里插入图片描述
file命令查看,普通文件与他的区别
在这里插入图片描述
一个是x86-64的文件,一个是ARM文件,接下来将,quanzhi文件拷入orangepi-zero2开发板进行测试

拷入文件测试

获得orangepi-zero2绝对路径,准备放到test文件夹
在这里插入图片描述
将这段代码放到orangepi-zero2上去运行

scp quanzhi orangepi@192.168.10.25:/home/orangepi/test
	 指令  文件名  开发板用户名@开发板地址:开发板的绝对路径

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

传送成功!

准备执行
在这里插入图片描述
执行成功!

结束

如遇问题欢迎提出共同进步!

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

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

相关文章

《Learning Combinatorial Optimization Algorithms over Graphs》阅读笔记

一.文章概述 本文提出将强化学习和图嵌入的组合以端到端地自动为图上组合优化问题设计贪心启发式算法,以避免设计传统算法所需要的大量专业知识和试错。学得的贪心策略行为类似增量构造解决方案的元算法,动作由解决方案当前状态上的图嵌入网络确定。作者…

『清安无别事-赠书01期』|〖测试设计思想〗

目录 🧡 内容简介 💛 作者简介 💖 本书内容|目录 💗 读后感想 💝 参与方式 购书传送门:测试设计思想购书传送门:测试设计思想购书传送门:测试设计思想 🧡 内容简介 …

Win10提醒事项如何打开?电脑上如何添加日程提醒?

有不少上班族表示自己在日常办公时,经常会忘记一些重要的事情,例如领导安排给自己的任务、会议安排、项目截止日期等。为了避免自己忘记工作事项,很多人都想要在电脑上设置提醒事项或添加日程提醒。那么Win10提醒事项如何打开呢?P…

LCS最大公共子序列 与 LIS最大递增子序列

LCS Largest Common Subsequence 最大公共子序列 /* Input s1 s2//两个字符串Output length//长度 ans//具体字母 */ #include<iostream> using namespace std; int main() {string s1,s2;cin>>s1>>s2;int dp[100][100]{0};//dp[i][j]表示s1取前i位&#x…

软件工程概述-架构师(三)

软件工程概述&#xff08;老版&#xff09; 软件开发生命周期&#xff1a; 软件定义时期&#xff1a;包括 可行性研究和详细需求分析过程&#xff0c;任务是软件工程必需完成的目标&#xff0c;具有可行问题分析、可行性研究、需求分析等。软件开发时期&#xff1a;软件的 设…

css浮动(为什么要清除浮动?清除浮动有哪几种方式?)

为什么要清除浮动&#xff1f; 清除浮动主要是为了清除浮动元素造成的影响&#xff0c;使浮动元素不会影响其后元素的布局 防止父元素高度塌陷&#xff1a;当元素浮动后&#xff0c;它会脱离一个标准文档流&#xff0c;不再占用原先的布局空间。如果一个父元素内只有浮动元素&a…

SpringBoot中优雅的实现隐私数据脱敏(提供Gitee源码)

前言&#xff1a;在实际项目开发中&#xff0c;可能会对一些用户的隐私信息进行脱敏操作&#xff0c;传统的方式很多都是用replace方法进行手动替换&#xff0c;这样会由很多冗余的代码并且后续也不好维护&#xff0c;本期就讲解一下如何在SpringBoot中优雅的通过序列化的方式去…

07 线程学习

一 qt线程角色 子线程完成与UI线程无关的工作,并且能够保持与UI线程通信 二 qt中线程 在QT中,对于 线程操作也是提供类(QThread)来进行封装,然后再学习该类的API接口 参数用途Header:#include qmake:QT += coreInherits:QObject //继承于QObject从官方文档可以看出,如果一…

每天一道leetcode:797. 所有可能的路径(图论中等深度优先遍历)

今日份题目&#xff1a; 给你一个有 n 个节点的 有向无环图&#xff08;DAG&#xff09;&#xff0c;请你找出所有从节点 0 到节点 n-1 的路径并输出&#xff08;不要求按特定顺序&#xff09; graph[i] 是一个从节点 i 可以访问的所有节点的列表&#xff08;即从节点 i 到节…

[论文笔记]Glancing Transformer for Non-Autoregressive Neural Machine Translation

引言 这是论文Glancing Transformer for Non-Autoregressive Neural Machine Translation的笔记。 传统的非自回归文本生成速度较慢,因为需要给定之前的token来预测下一个token。但自回归模型虽然效率高,但性能没那么好。 这篇论文提出了Glancing Transformer,可以只需要一…

Verdi_traceX and autotrace

Verdi_traceX and autotrace Trace X From nWave/nTrace of from the Teporal Flow View. Show Paths on Flow ViewShow Paths on nWave 若Waveform中有X态&#xff0c;鼠标右键会有Trace X的选项&#xff1b; 会自动打开Temporal Flow View窗口&#xff0c;展示对应路径&am…

我的创作纪念日 — 嵌入式up(2023.8.15)

机缘 在2022年8月15日&#xff0c;开始了CSDN文章的编写&#xff0c;最初只想做一个知识的积累&#xff0c;毕竟对一个电子发烧友来说&#xff0c;很多东西都是迭代很快&#xff0c;且玩的次数不会很多&#xff0c;有些问题和一些解决方法&#xff0c;最好记录下来&#xff0c;…

分类预测 | MATLAB实现EVO-CNN多输入分类预测

分类预测 | MATLAB实现EVO-CNN多输入分类预测 目录 分类预测 | MATLAB实现EVO-CNN多输入分类预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.MATLAB实现EVO-CNN多输入分类预测 2.代码说明&#xff1a;量谷优化卷积神经网络的数据分类预测&#xff1a;要求于Matlab …

杭电多校 Shortest path 记忆化搜索

&#x1f468;‍&#x1f3eb; Shortest path 输入 4 7 114514 1919810 2147483648输出 3 19 20 31&#x1f351; 思路&#xff1a;用操作3 凑出 操作1 操作2 的前提条件&#xff0c;暴搜记忆化搜索 import java.io.*; import java.util.*;public class Main {static Buffer…

linux中的/dev/null

1.什么是/dev 在 Linux 上&#xff0c;从驱动程序到设备的所有内容都可以作为文件进行访问。/dev/ 是包含所有物理和虚拟设备的目录。例如&#xff0c;/dev/sda 可能是您的主硬盘驱动器&#xff0c;/dev/sdb 可能是您现在正在使用的笔记本驱动器的文件。这就是您在 Linux 中访问…

华为OD机试-考勤信息

代码实现 # coding: utf-8 import numpyclass Solution:def chuqinInfo(self, n, arrs):res []for i in range(n):arr arrs[i]count 0for s in arr:if str(s) absent:count 1if count > 1:res.append(False)continuefor i in range(len(arr) - 1):a arr[i]b arr[i …

前端技术栈es6+promise

let入门使用、 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>let 基本使用</title><script type"text/javascript">let name "hspedu教育";//老韩解读//1. conso…

字符函数、数值函数、日期时间函数、聚集函数、判断函数、运算符号、排序、分组、过滤、分页、插入表记录、更新表记录、删除表记录

Top NSD DBA DAY02 案例1&#xff1a;常用函数案例2&#xff1a;查询结果处理案例3&#xff1a;管理表记录 1 案例1&#xff1a;常用函数 1.1 问题 练习字符函数练习数学函数练习日期函数练习聚集函数练习数学计算练习if函数练习case函数 1.2 方案 函数&#xff1a;MySQL…

将树莓派转身为强大的Web服务器:使用Nginx和cpolar实现远程访问

文章目录 1. Nginx安装2. 安装cpolar3.配置域名访问Nginx4. 固定域名访问5. 配置静态站点 安装 Nginx&#xff08;发音为“engine-x”&#xff09;可以将您的树莓派变成一个强大的 Web 服务器&#xff0c;可以用于托管网站或 Web 应用程序。相比其他 Web 服务器&#xff0c;Ngi…

【Python】使用python解析普通格式的报文为someip格式报文

文章目录 1.安装scapy库2.示例 1.安装scapy库 使用 pip 安装 scapy 第三方库&#xff0c;打开 cmd&#xff0c;输入以下命令&#xff1a; pip install scapy出现如图所示&#xff0c;表示安装成功&#xff1a; 2.示例 要解析someip格式报文&#xff0c;需要导入someip模块&a…