【PX4-AutoPilot教程-TIPS】Ubuntu中安装指定版本的gcc-arm-none-eabi

Ubuntu中安装指定版本的gcc-arm-none-eabi

在 Ubuntu 中开发基于 ARM 架构的 STM32 芯片,需要安装交叉编译器 gcc-arm-none-eabi编译代码,那么什么是交叉编译器呢?

Ubuntu 自带的 gcc 编译器是针对 X86 架构的!而我们现在要编译的是 ARM 架构的代码,所以我们需要一个在 X86 架构的 PC 上运行,可以编译 ARM 架构代码的 GCC 编译器,这个编译器就叫做交叉编译器,总结一下交叉编译器就是:

(1)它是一个 GCC 编译器;

(2)这个 GCC 编译器是运行在 X86 架构 PC 上的;

(3)这个 GCC 编译器是编译 ARM 架构代码的,也就是编译出来的可执行文件是在 ARM 芯片上运行的。

交叉编译器中“交叉”的意思就是在一个架构上编译另外一个架构的代码,相当于两种架构“交叉”起来了。

GNU Arm Embedded Toolchain简介

GNU Arm Embedded Toolchain 是用于 C、C++ 和汇编编程的即用型开源工具套件。GNU Arm 嵌入式工具链适用于 32 位 Arm Cortex-A、Arm Cortex-M 和 Arm Cortex-R 处理器系列。GNU Arm 嵌入式工具链包括 GNU 编译器 (GCC),可直接从 Arm 免费获得,用于在 Windows、Linux 和 Mac OS X 操作系统上进行嵌入式软件开发。

gcc-arm-none-eabi安装

Ubuntu 16.04 之后的软件源是自带 gcc-arm-none-eabi 的,只是自动安装后的版本不一定符合要求,造成编译时报错。

自动安装

打开终端,输入命令,使用 Ubuntu 自带的 APT 下载工具安装 gcc-arm-none-eabi。

sudo apt-get install gcc-arm-none-eabi

安装完成后,再输入命令获取版本号,可以在最后一行看到版本号。

arm-none-eabi-gcc -v

Ubuntu16.04 和 Ubuntu18.04 都可以自动安装,只是默认版本号高低不同。

Ubuntu16.04下 gcc 版本号:gcc version 4.9.3 20150529;Ubuntu18.04下 gcc 版本号:gcc version 6.3.1 20170620。

手动安装(推荐)

官网下载:https://developer.arm.com/downloads/-/gnu-rm

在这里插入图片描述

这里选择了10.3-2021.10版本,可以根据自己的需要下载其它版本。

将下载好的软件包放在Desktop桌面,使用命令将其移动到opt文件夹。

sudo mv ~/Desktop gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 /opt

进入opt文件夹。

cd /opt

解压下载的软件包。

sudo tar -vxf gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2

解压后删除压缩包,留下解压后的文件夹。

sudo rm gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2

安装环境依赖包,如果不安装所有依赖包的话执行arm-none-eabi-gcc时会显示找不到文件或文件夹。

$ sudo apt-get install lsb-core
$ sudo apt-get install lib32ncurses5 lib32tinfo5 libc6-i386

添加环境变量到用户目录下的 .profile 文件,这里可以使用gedit命令也可以使用vim命令进行编辑。

sudo gedit ~/.profile
sudo vim ~/.profile

在这里插入图片描述

在文件的最后一行空白处添加一行代码,保存后关闭。

export PATH=/opt/gcc-arm-none-eabi-10.3-2021.10/bin:$PATH

如果已经安装了gcc-arm-none-eabi想进行版本修改的话,可将export PATH=/opt/gcc-arm-none-eabi-9-2019-q4-major/bin:$PATH改成export PATH=/opt/gcc-arm-none-eabi-10.3-2021.10/bin:$PATH即可(更改路径中的版本名称)。

使能环境变量,有时需要重启系统才能永久生效。

source ~/.profile

检查交叉编译器是否安装成功,输入以下命令。

arm-none-eabi-gcc -v

在这里插入图片描述

如果安装成功后编译还出现报错可以使用make clean命令清除上次的make命令所产生的object文件及可执行文件,重新编译。


参考资料:

Ubuntu中gcc-arm-none-eabi的安装、移除和版本切换_arm-none-eabi-gcc_EmotionFlying的博客-CSDN博客

在Linux Ubnutu下安装arm-none-eabi-gcc及所必须的各种依赖包_gcc-arm-none-eabi下载_风吹花中花吹风的博客-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode2962. 统计最大元素出现至少 K 次的子数组

Every day a Leetcode 题目来源:2962. 统计最大元素出现至少 K 次的子数组 解法1:滑动窗口 算法如下: 设 mx max⁡(nums)。右端点 right 从左到右遍历 nums。遍历到元素 xnums[right] 时,如果 xmx,就把计数器 co…

【springboot+vue项目(零)】开发项目经验积累(处理问题)

一、VUEElement UI (一)elementui下拉框默认值不是对应中文问题 v-model绑定的值必须是字符串,才会显示默认选中对应中文,如果是数字,则显示数字,修改为: handleOpenAddDialog() {this.dialogT…

JVS规则引擎和智能BI(自助式数据分析)1.3新增功能说明

规则引擎更新功能 新增: 1、数据源新增Excel数据源; Excel数据源功能允许用户将Excel文件作为数据源导入,并进行数据清洗、转换和处理,以实现数据的集成、可视化和深度分析,为决策提供强大支持,同时保持良好的交互性…

html+css 有关于less的使用和全面解释

目录 less 注释 运算 嵌套 变量 导入 导出 禁止导出 less Less是一个CSS预处理器, Less文件后缀是.less。扩充了 CSS 语言, 使 CSS 具备一定的逻辑性、计算能力 注意:浏览器不识别 Less 代码,目前阶段,网页要引入对应的 CSS 文件 V…

ClickHouse数据库详解和应用实践

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 概述1.适用场景2.不适用场景 一、核心特性1.完备的DBMS功能2.列式存储与数据压缩 二、安装部署1.在线安装2.离线安装 三、jdbc访问总结 概述 ClickHouse 是一个用于…

Linux 系统磁盘空间扩容

根据提示可以看到此系统的磁盘是 50G 的,但是实际适用有28G左右可以扩容20G 1、磁盘分区 m 查看帮助信息 n(表示增加分区) p(创建主分区) partition number 输入3(因为上面已经有两个分区 sda1 和 sda2&…

Qt中图片旋转缩放操作

在我们开发过程中,难免会遇到加载图片的问题,在上一个开发项目里我就遇到了图片缩放的问题,所以,我决定将这一部分好好研究,记录下来,希望对大家有帮助哟~ 在讲解之前,我们先看一看具体的展示效…

react antd,echarts全景视图

1.公告滚动,40s更新一次 2.echarts图标 左右轮播 60s更新一次 3.table 表格 import { useState, useEffect } from react;import Slider from react-slick; import slick-carousel/slick/slick-theme.css; import slick-carousel/slick/slick.css;import Layout fro…

MongoDB批量写入操作

一、概述 MongoDB为客户端提供了批量执行写入操作的能力。批量写入操作影响单个集合。MongoDB允许应用程序确定批量写入操作所需的可接受确认级别。 db.collection.bulkWrite()方法提供了执行批量插入、更新和删除操作的能力。 MongoDB还支持通过db.col…

使用Apache POI将数据写入Excel文件

首先导入依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.16</version> </dependency> <dependency><groupId>org.apache.poi</groupId><artifactId>po…

Spring Cloud Gateway 缓存区异常

目录 1、问题背景 2、分析源码过程 3、解决办法 最近在测试环境spring cloud gateway突然出现了异常&#xff0c;在这里记录一下&#xff0c;直接上干货 1、问题背景 测试环境spring cloud gateway遇到以下异常 DataBufferLimitException: Exceeded limit on max bytes t…

Spring 面试题学习笔记整理

Spring 面试题学习笔记整理 Spring的理解IOC读取 xml注入 配置过程解析注解注入过程 高频 &#xff1a;IOC 理解 及原理 底层实现IoC的底层实现高频&#xff1a;Bean的生命周期&#xff08;图解&#xff09;高频&#xff1a;Bean的生命周期&#xff08;文解&#xff09;扩展知识…

STM32和ESP8266的WiFi模块控制与数据传输

基于STM32和ESP8266 WiFi模块的控制与数据传输是一种常见的嵌入式系统应用。在这种应用中&#xff0c;STM32作为主控制器负责控制和与外部传感器交互&#xff0c;而ESP8266 WiFi模块则用于实现无线通信和数据传输。本文将介绍如何在STM32上控制ESP8266模块&#xff0c;建立WiFi…

【React系列】React生命周期、setState深入理解、 shouldComponentUpdate和PureComponent性能优化、脚手架

本文来自#React系列教程&#xff1a;https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5MDAzNzkwNA&actiongetalbum&album_id1566025152667107329) 一. 生命周期 1.1. 认识生命周期 很多的事物都有从创建到销毁的整个过程&#xff0c;这个过程称之为是生命周期&…

3D 纹理的综合指南

在线工具推荐&#xff1a;3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 我们经常看到超现实主义的视频游戏和动画电影角色出现在屏幕上。他们皮肤上的…

EasyRecovery2024永久免费版电脑数据恢复软件

EasyRecovery是一款操作安全、价格便宜、用户自主操作的非破坏性的只读应用程序&#xff0c;它不会往源驱上写任何东西&#xff0c;也不会对源驱做任何改变。它支持从各种各样的存储介质恢复删除或者丢失的文件&#xff0c;其支持的媒体介质包括&#xff1a;硬盘驱动器、光驱、…

嵌入式(三)中断解析 | 中断基本概念 CC2530中断系统 中断编程全解析

文章目录 1中断的概念和作用1.1 概念1.2 作用1.3 中断 其他概念 2. CC2530的中断系统3 中断编程3.1 中断配置3.1.1 使能端口组的中断功能3.1.2 使能当前端口组有哪些端口引脚中断3.1.3 设置中断触发方式 3.2 中断处理函数编写3.2.1 基本编写格式3.2.2 识别触发外部中断的端口Po…

实验笔记之——bug:in /usr/local/lib/libfmt.a(format.cc.o) is referenced by DSO

最近在编译D-MAP的时候遇到下面的问题 在github issue好像也有类似的提问 compiling error with fmt Issue #4 hku-mars/D-Map GitHub 这应该是fmt配置没有连接上。为此寻找所有包含的fmt文件&#xff0c;在头文件处加入 #define FMT_HEADER_ONLY #include "fmt/for…

Java学习苦旅(十九)——详解Java的堆和优先级队列

本篇博客将详细讲解堆和优先级队列。 文章目录 堆概念向下调整 优先级队列概念内部原理入队列出队列返回队首元素java中的优先级队列常用操作 topK问题结尾 堆 概念 堆逻辑上是一棵完全二叉树。 堆物理上是保存在数组中。 满足任意结点的值都大于其子树中结点的值&#xff…

北京大学漏洞报送证书

获取来源&#xff1a;edusrc&#xff08;教育漏洞报告平台&#xff09; url&#xff1a;教育漏洞报告平台(EDUSRC) 兑换价格&#xff1a;30金币 获取条件&#xff1a;北京大学任意中危或以上级别漏洞