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 交叉编译器的版本。

相关文章
|
29天前
|
并行计算 PyTorch TensorFlow
Ubuntu安装笔记(一):安装显卡驱动、cuda/cudnn、Anaconda、Pytorch、Tensorflow、Opencv、Visdom、FFMPEG、卸载一些不必要的预装软件
这篇文章是关于如何在Ubuntu操作系统上安装显卡驱动、CUDA、CUDNN、Anaconda、PyTorch、TensorFlow、OpenCV、FFMPEG以及卸载不必要的预装软件的详细指南。
2669 3
|
1天前
|
Ubuntu 开发工具 git
Ubuntu安装homebrew的完整教程
本文介绍了如何在没有公网的情况下安装 Homebrew。首先访问 Homebrew 官网,然后通过阿里云的镜像克隆安装脚本,并创建普通用户进行安装。接着修改 `install.sh` 文件指向国内镜像,执行安装命令。最后配置环境变量并更换 Homebrew 源为国内镜像,确保安装顺利。
70 50
|
23天前
|
Ubuntu Linux 测试技术
Linux系统之Ubuntu安装cockpit管理工具
【10月更文挑战第13天】Linux系统之Ubuntu安装cockpit管理工具
83 4
Linux系统之Ubuntu安装cockpit管理工具
|
28天前
|
Ubuntu 应用服务中间件 nginx
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
本文是关于Ubuntu系统中使用ffmpeg 3.2.16源码编译OpenCV 3.4.0的安装笔记,包括安装ffmpeg、编译OpenCV、卸载OpenCV以及常见报错处理。
118 2
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
|
28天前
|
Ubuntu Linux C语言
Ubuntu安装笔记(二):ubuntu18.04编译安装opencv 3.4.0 opencv_contrib3.4.0
本文介绍了在Ubuntu 18.04系统上编译安装OpenCV 3.4.0及其扩展包opencv_contrib 3.4.0的详细步骤,包括下载源码、安装依赖、配置CMake和编译安装,以及常见问题的解决方法。
73 1
Ubuntu安装笔记(二):ubuntu18.04编译安装opencv 3.4.0 opencv_contrib3.4.0
|
24天前
|
Kubernetes Ubuntu Docker
从0开始搞K8S:使用Ubuntu进行安装(环境安装)
通过上述步骤,你已经在Ubuntu上成功搭建了一个基本的Kubernetes单节点集群。这只是开始,Kubernetes的世界广阔且深邃,接下来你可以尝试部署应用、了解Kubernetes的高级概念如Services、Deployments、Ingress等,以及探索如何利用Helm等工具进行应用管理,逐步提升你的Kubernetes技能树。记住,实践是最好的老师,不断实验与学习,你将逐渐掌握这一强大的容器编排技术。
86 1
|
28天前
|
Ubuntu Linux
软件安装(五):Ubuntu 18.04安装Teamviewer 看一遍就会
这篇文章介绍了在Ubuntu 18.04系统上通过图形界面和命令行两种方法安装TeamViewer远程控制软件的步骤。
26 2
|
28天前
|
人工智能 安全 大数据
ARM 服务器上安装 OpenEuler (欧拉)
openEuler 是华为于2019年开源的操作系统,支持多种处理器架构,包括X86和鲲鹏。截至2020年底,openEuler 拥有3万社区用户、2万多个拉取请求、2000多名贡献者和7032款软件。openEuler 提供高效、稳定、安全的系统,适用于数据库、大数据、云计算和人工智能等场景。本文介绍了在神州鲲泰 R522 服务器上安装 openEuler 的详细步骤,包括下载镜像、配置 RAID 和 BIOS 设置等。
166 0
ARM 服务器上安装 OpenEuler (欧拉)
|
10天前
|
消息中间件 Ubuntu Java
Ubuntu系统上安装Apache Kafka
Ubuntu系统上安装Apache Kafka
|
16天前
|
Ubuntu Linux
Ubuntu 16.04下无法安装.deb的解决方法
希望以上策略能有效协助您克服在Ubuntu 16.04中安装.deb文件时遇到的挑战。
17 0
下一篇
无影云桌面