在配置arm交叉编译器的过程中,发现正点原子和网上的大部分教程都是教你安装Linaro版的交叉编译器;但笔者实际去看的时候发现其早就不更新了,最近一次的更新还是在2019年:
屏幕截图 2024-12-25 090419.png
这就很难受了,于是转头安装arm官方的交叉编译器,这个可是一直在更新的。
注:Ubuntu使用apt-get install gcc-arm-linux-gnueabihf命令安装的为Linaro版交叉编译器

下载工具链

网上部分教程的ARM网址是过时的,上面没有最新的工具链,这里给出最新下载地址:
https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads
点进去会有很多的下载链接,笔者需要在x86 Ubuntu虚拟机下编译IMX6ULL的文件,因此需要选择arm-gnu-toolchain-14.2.rel1-x86_64-arm-none-linux-gnueabihf.tar.xz下载。
屏幕截图 2024-12-25 091106.png
在终端中直接执行以下命令即可下载:

sudo wget https://developer.arm.com/-/media/Files/downloads/gnu/14.2.rel1/binrel/arm-gnu-toolchain-14.2.rel1-x86_64-arm-none-linux-gnueabihf.tar.xz

当然,你也可以在Windows中下载完成后,传输到Ubuntu虚拟机中,就是有点麻烦。

如果你使用命令下载中断了,记得删除已经下载的文件,不然再次下载会另存为一个.1后缀的文件:
屏幕截图 2024-12-25 091749.png

安装工具链

输入以下命令解压下载的压缩包:(根据文件不同,命令中的对象也不同,不要无脑复制)

sudo tar -xvf arm-gnu-toolchain-14.2.rel1-x86_64-arm-none-linux-gnueabihf.tar.xz

新建一个arm目录用于存放工具链:(其实放哪都行,改下环境变量就是了,但是会很乱)

sudo mkdir /usr/local/arm

将解压出来的文件夹复制到此目录下:

sudo cp arm-gnu-toolchain-14.2.rel1-x86_64-arm-none-linux-gnueabihf /usr/local/arm -r

为了使用相关命令,我们需要将工具链的可执行文件添加到环境变量中,如果你使用的是BASH(系统自带的那个shell),那么按照下方的操作即可:

sudo vim /etc/profile

在末尾添加如下内容:

export PATH=$PATH:/usr/local/arm/arm-gnu-toolchain-14.2.rel1-x86_64-arm-none-linux-gnueabihf/bin

保存退出重启即可完成配置。

如果你使用的是zsh则按照下方步骤进行配置:

vim ~/.zshrc

在指定的位置(为了优雅),添加环境变量:

export PATH=$PATH:/usr/local/arm/arm-gnu-toolchain-14.2.rel1-x86_64-arm-none-linux-gnueabihf/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/arm/arm-gnu-toolchain-14.2.rel1-x86_64-arm-none-linux-gnueabihf/lib

添加完成后的效果如下:
屏幕截图 2024-12-25 092955.png
保存退出,source一下:

source ~/.zshrc

可以了,官方工具链需要使用arm-none-linux-gnueabihf-gcc命令:
屏幕截图 2024-12-25 093123.png