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 的,只是自动安装后的版本不一定符合要求。常用的安装方式有以下三种:

2.1 自动安装

提示:网络环境比较差的情况下,不推荐自动安装(安装时间以小时为单位)。

(1)在 Ubuntu 用户目录下打开终端,输入命令;


使用 Ubuntu 自带的 APT 下载工具安装 gcc-arm-none-eabi。

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

(2)Ubuntu 16.04

系统没有安装 gcc 交叉编译器前,我们获取 gcc 版本,提示软件未安装。输入安装命令和密码等待安装完成。


33a4ff4040b041669a042100c017f891.png

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

arm-none-eabi-gcc -v


b6b2af78fa5f4b51a0f8e0d3a40e19c9.png

(3) Ubuntu 18.04

系统没有安装 gcc 交叉编译器前,我们获取 gcc 版本,提示软件未安装。输入安装命令和密码等待安装完成。


c5f70550be8e41ddbbcfdfef2ab1ba84.png

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

在不添加其它 PPA 的情况下,Ubuntu16.04 和 Ubuntu18.04 都可以自动安装,只是默认版本号高低不同。Ubuntu16.04下 gcc 版本号:gcc version 4.9.3 20150529;Ubuntu18.04下 gcc 版本号:gcc version 6.3.1 20170620。

2.2 添加新的PPA进行安装

提示:网络环境比较差的情况下,不推荐 PPA 安装(安装时间以小时为单位)。

(1)在 Ubuntu 用户目录下打开终端,输入命令,添加替代 PPA

sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa

1fa480ac51ef4cba8471ff922c2b6a77.png

(2)更新 PPA;

sudo apt-get update


5fdf2230c94e46fb87e70ee2bafda529.png(3) 安装工具链;

sudo apt-get install gcc-arm-embedded

(4)如果需要移除已安装的工具链;(非需不执行)

sudo apt-get remove gnu-arm-embedded

(5)如果要更新工具链,只要重复(2)、(3)步骤即可;(非需不执行)

(6)如果 gcc-arm-none-eabi 报告冲突的错误消息,这可能是从 4.x 升级到 5+,输入命令卸载旧版本;(非需不执行)

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

(7)再输入命令,安装交叉编译器;

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


如果仍有问题, 参考官方网站,有详细的教程:https://launchpad.net/~team-gcc-arm-embedded/+archive/ubuntu/ppa

2.3 手动安装(推荐)

2.3.1 软件下载

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


e57e885286b64a068486e9c7ea41e159.png

这里选择了 6-2017-q2-update,可以根据自己的需要下载其它版本。

(2)BaiDuYun:https://pan.baidu.com/s/1d_vAb5g4FPtLBt1El2nVlQ    提取码:j2wk

2.3.2 安装步骤

进入软件包下载目录,打开终端,输入命令;


ccbf8708607d492087316b2aeb32ff37.png

(1)改变当前目录到指定目录,并保存当前的目录在堆栈顶端;

(1) pushd .



(2)解压下载的软件包(等待解压完成,生成新的文件夹,用 ls 命令可以查看);

(2) tar -jxf gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2


(3)将解压出来的软件包(gcc-arm-none-eabi-6-2017-q2-update)移动到 Ubuntu 根目录下的 opt 文件夹中;

(3) sudo mv gcc-arm-none-eabi-6-2017-q2-update /opt

(4)添加环境变量到用户目录下的 .profile 文件(该文件是隐藏文件,在用户目录界面中通过 Ctrl + h 快捷方式可以显示隐藏文件);


(4) exportline="export PATH=/opt/gcc-arm-none-eabi-6-2017-q2-update/bin:\$PATH"

(5)检测环境变量是否添加成功;

(5) if grep -Fxq "$exportline" ~/.profile; then echo nothing to do ; else echo $exportline >> ~/.profile; fi

添加成功不会有输出;如果添加失败,会输出提示。

(6)使能环境变量;

(6) source ~/.profile

(7)改变当前目录,跳转到堆栈顶端保存的目录,并将堆栈顶端的目录删除;

(7) popd

注意:如果安装其他版本的 gcc 编译器,在命令(2)、(3)、(4)中,要把压缩包名和解压的文件名做相应替换。

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

(8) arm-none-eabi-gcc -v

f30225e8ff7f4c9b8ca37d0408d1bb70.png

输入命令后,最后一行打印了我们刚才安装的交叉编译器的版本信息,表示安装成功。

三、gcc-arm-none-eabi移除

3.1 自动安装的卸载

(1)用户目录下打开终端,输入卸载命令;

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

d15f329483054aac9c51592e330f4580.png

卸载完成后,再获取版本号,已经被卸载,找不到文件。

3.2 手动安装的移除

(1)用户目录下打开终端,输入移除命令;

sudo rm -rf /opt/gcc-arm-none-eabi-6-2017-q2-update/

(2)打开环境变量文件 .profile,删除或屏蔽编译器安装路径;

sudo gedit .profile

b1b7cc60a2f441998466c9886152c390.png

快捷键 Ctrl + s 保存 .profile 文件,点击“X”退出文件。

(3)输入命令使能环境变量;

source ~/.profile

(4)再输入命令,查询版本号;

如果 .profile 文件中,没有手动安装的 gcc 编译器路径,那么 gcc 编译器版本切换回自动安装的版本(前提:没有卸载自动安装的 gcc 编译器)。

image.png

四、gcc-arm-none-eabi版本切换

4.1 切换原理简介

有时我们会遇到:不同项目工程所需的 gcc-arm-none-eabi 版本也不同。如何快速有效的切换 gcc 交叉编译器的版本呢?

通过上面的手动安装步骤,我们知道 gcc 交叉编译器最终是否有效,取决于环境变量文件 .profile 中的安装包路径是否被 Ubuntu 系统“知晓”。所以我们使用不同的环境变量,等价于使用不同版本的交叉编译器。

4.2 切换步骤

前提:Ubuntu 系统中,已经安装了2个以上不同版本的 gcc-arm-none-eabi。

(1)用户目录下打开终端,输入命令,查看当前 gcc 编译器版本;

arm-none-eabi-gcc -v

(2)输入命令打开环境变量文件 .profile;

sudo gedit .profile

(3)将不需要的版本环境变量屏蔽,留下需要的版本环境变量即可;

方法:在需要屏蔽的版本路径前加“#”号字符即可。

这里我们保留 5_4 版本,屏蔽 6-2017-q2 版本。快捷键 Ctrl + s 保存 .profile 文件,点击“X”退出文件。

(4)输入命令使能环境变量;

source ~/.profile

(5)此时再输入版本查看命令,可以看到版本切换成功;

(6)如果版本切换失败,可尝试重启 Ubuntu;

reboot

(7)如果 Ubuntu 系统中有自动安装的 gcc 交叉编译器,那么在 .profile 文件中,使能手动安装的 gcc 编译器路径,优先级高于自动安装的编译器版本。

所以在自动安装和手动安装混合的 Ubuntu 系统中,当需要自动安装的 gcc 编译器版本时,屏蔽 .profile 文件中所有手动安装的编译器路径,再重启系统即可;当需要手动安装的 gcc 编译器版本时,使能 .profile 文件中所需手动安装的编译器路径即可。

总结

以上就是在 Ubuntu 系统中 gcc-arm-none-eabi 交叉编译器的三种安装方法介绍,这里主要推荐使用第三种安装方法:手动安装,方便后续版本管理和版本切换。

还讲解了在 Ubuntu 系统中,如何移除 gcc 交叉编译器(自动安装和手动安装 )、如何方便快捷的切换 gcc 交叉编译器的版本。

相关文章
|
8天前
|
JSON Ubuntu 开发者
ubuntu 22安装lua环境&&编译lua cjson模块
通过上述步骤,可以在 Ubuntu 22.04 系统上成功安装 Lua 环境,并使用 LuaRocks 或手动编译的方式安装 lua-cjson 模块。本文详细介绍了每一步的命令和操作,确保每一步都能顺利完成,适合需要在 Ubuntu 系统上配置 Lua 开发环境的开发者参考和使用。
41 13
|
8天前
|
Ubuntu 芯片 开发者
Ubuntu 25 ARM 桌面系统抢先版发布:第一个Ubuntu ARM桌面系统
Ubuntu 25.04 将于2025年发布,首次支持ARM Desktop桌面版系统,为ARM架构设备如Mac M系列芯片、Raspberry Pi等带来全新的桌面体验。用户可通过虚拟机或双系统安装在Mac上运行Ubuntu ARM,抢先体验版已开放下载:[链接](https://www.baihezi.com/ubuntu/arm/desktop)。此版本不仅扩展了Ubuntu的硬件兼容性,还提供了丰富的功能和流畅的操作体验,适合开发者和技术爱好者尝试。
70 9
|
4天前
|
监控 关系型数据库 MySQL
Ubuntu24.04安装Librenms
此指南介绍了在Linux系统上安装和配置LibreNMS网络监控系统的步骤。主要内容包括:安装所需软件包、创建用户、克隆LibreNMS仓库、设置文件权限、安装PHP依赖、配置时区、设置MariaDB数据库、调整PHP-FPM与Nginx配置、配置SNMP及防火墙、启用命令补全、设置Cron任务和日志配置,最后通过网页完成安装。整个过程确保LibreNMS能稳定运行并提供有效的网络监控功能。
|
15天前
|
Ubuntu Linux Docker
Ubuntu22.04上Docker的安装
通过以上详细的安装步骤和命令,您可以在Ubuntu 22.04系统上顺利安装
204 11
|
2月前
|
Ubuntu 开发工具 git
Ubuntu安装homebrew的完整教程
本文介绍了如何在没有公网的情况下安装 Homebrew。首先访问 Homebrew 官网,然后通过阿里云的镜像克隆安装脚本,并创建普通用户进行安装。接着修改 `install.sh` 文件指向国内镜像,执行安装命令。最后配置环境变量并更换 Homebrew 源为国内镜像,确保安装顺利。
352 50
|
2月前
|
Ubuntu
ubuntu和debian 的安装包dpkg管理命令对安装包进行安装,查询,卸载
Ubuntu dpkg 软件包管理命令概览:安装、卸载、查看和配置软件包。包括解决依赖、强制卸载、列出及过滤已安装包、查看包详情等操作。
65 10
|
2月前
|
Ubuntu API 开发工具
PSOPT在Ubuntu22.04下的安装
通过上述步骤,可以在Ubuntu 22.04下成功安装并配置PSOPT。PSOPT是一个功能强大的工具,适用于解决各种最优控制问题。确保在安装前满足系统要求,并仔细按照步骤操作,可以避免大多数常见问题。通过MATLAB与PSOPT的结合,您可以更高效地处理复杂的控制问题,并获得准确的解决方案。
37 5
|
2月前
|
Ubuntu 网络协议 关系型数据库
超聚变服务器2288H V6使用 iBMC 安装 Ubuntu Server 24.04 LTS及后续系统配置
【11月更文挑战第15天】本文档详细介绍了如何使用iBMC在超聚变服务器2288H V6上安装Ubuntu Server 24.04 LTS,包括连接iBMC管理口、登录iBMC管理界面、配置RAID、安装系统以及后续系统配置等步骤。
177 4
|
3月前
|
Ubuntu Linux 测试技术
Linux系统之Ubuntu安装cockpit管理工具
【10月更文挑战第13天】Linux系统之Ubuntu安装cockpit管理工具
247 4
Linux系统之Ubuntu安装cockpit管理工具
|
2月前
|
消息中间件 Ubuntu Java
Ubuntu系统上安装Apache Kafka
Ubuntu系统上安装Apache Kafka