Ubuntu中gcc-arm-none-eabi的安装、移除和版本切换

文章目录

前言

一、GNU Arm Embedded Toolchain简介

二、gcc-arm-none-eabi安装

2.1 自动安装

2.2 添加新的PPA进行安装

2.3 手动安装(推荐)

2.3.1 软件下载

2.3.2 安装步骤

三、gcc-arm-none-eabi移除

3.1 自动安装的卸载

3.2 手动安装的移除

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

4.1 切换原理简介

4.2 切换步骤

总结


前言

在 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 版本,提示软件未安装。输入安装命令和密码等待安装完成。

Ubuntu中gcc-arm-none-eabi的安装、移除和版本切换_第1张图片

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

arm-none-eabi-gcc -v

Ubuntu中gcc-arm-none-eabi的安装、移除和版本切换_第2张图片

 (3) Ubuntu 18.04

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

Ubuntu中gcc-arm-none-eabi的安装、移除和版本切换_第3张图片

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

Ubuntu中gcc-arm-none-eabi的安装、移除和版本切换_第4张图片

在不添加其它 PPA 的情况下,Ubuntu16.04 和 Ubuntu18.04 都可以自动安装,只是默认版本号高低不同。Ubuntu16.04下 gcc 版本号:gcc version 4.9.3 20150529Ubuntu18.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

Ubuntu中gcc-arm-none-eabi的安装、移除和版本切换_第5张图片

(2)更新 PPA;

sudo apt-get update

Ubuntu中gcc-arm-none-eabi的安装、移除和版本切换_第6张图片

(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

Ubuntu中gcc-arm-none-eabi的安装、移除和版本切换_第7张图片

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

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

2.3.2 安装步骤

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

Ubuntu中gcc-arm-none-eabi的安装、移除和版本切换_第8张图片

(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

Ubuntu中gcc-arm-none-eabi的安装、移除和版本切换_第9张图片

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

三、gcc-arm-none-eabi移除

3.1 自动安装的卸载

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

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

Ubuntu中gcc-arm-none-eabi的安装、移除和版本切换_第10张图片

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

3.2 手动安装的移除

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

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

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

sudo gedit .profile

Ubuntu中gcc-arm-none-eabi的安装、移除和版本切换_第11张图片

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

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

source ~/.profile

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

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

Ubuntu中gcc-arm-none-eabi的安装、移除和版本切换_第12张图片

四、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)将不需要的版本环境变量屏蔽,留下需要的版本环境变量即可;

Ubuntu中gcc-arm-none-eabi的安装、移除和版本切换_第13张图片

方法:在需要屏蔽的版本路径前加“#”号字符即可。这里我们保留 5_4 版本,屏蔽 6-2017-q2 版本。快捷键 Ctrl + s 保存 .profile 文件,点击“X”退出文件。

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

source ~/.profile

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

Ubuntu中gcc-arm-none-eabi的安装、移除和版本切换_第14张图片

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

reboot

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

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


总结

以上就是在 Ubuntu 系统中 gcc-arm-none-eabi 交叉编译器的三种安装方法介绍,这里主要推荐使用第三种安装方法:手动安装,方便后续版本管理和版本切换。还讲解了在 Ubuntu 系统中,如何移除 gcc 交叉编译器(自动安装和手动安装 )、如何方便快捷的切换 gcc 交叉编译器的版本。

你可能感兴趣的:(【Ubuntu】,ubuntu,arm,gnu)