简介

交叉编译工具链是将程序源代码编译为目标架构可执行文件的工具集。在这篇教程中,我们将学习如何在 Ubuntu 虚拟机 上安装和配置 aarch64-linux-gnu 工具链。此工具链专为 AArch64(ARM64)架构 设计,使我们能够在 x86_64(传统的 PC 架构)上编译为 ARM64 架构的可执行文件。aarch64-linux-gnu既能编译linux内核相关的工程,也能编译目标板是64位的uboot工程。

准备工作

  1. Ubuntu 虚拟机或物理机:需要安装 Ubuntu 操作系统,最好是 20.04 或更高版本。

  2. 网络连接:需要能够连接到互联网以安装必要的软件包。

步骤

1. 下载交叉编译工具链

Ubuntu 提供了 aarch64-linux-gnu 工具链包,可以通过 APT 包管理器来安装。也可以自己下载安装包再进行解压安装。我就讲讲试过的第2种;

下载链接:
Linaro Releases

我选择的是下面这个版本:

将上面的这个压缩包解压放到虚拟机系统下的路径,便于后续安装;

2. 安装其他必要工具

除了编译器,还可能需要其他一些工具,比如链接器(binutils)和库文件等,这个可以在后续的编译过程中,遇到编译问题再去安装对应的库。

3. 设置环境变量

为了在编译过程中更方便地使用交叉编译工具链,您可以将交叉编译工具链添加到环境变量中,这一步才算将它成功安装。需要在 ~/.bashrc 文件中加入以下行来设置环境变量。

接着设置PATH, ARCH和CROSS_COMPILE三个环境变量并使其永久生效,执行如下指令配置文件.bashrc

vim ~/.bashrc

接着在行尾添加如下几行:

export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-
export PATH=$PATH:/home/book/100ask_imx6ull-sdk/ToolChain/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin

注意:路径记得换成实际的工具链路径;

保存并退出编辑器,然后使其生效:

source ~/.bashrc

这将使 CROSS_COMPILE 环境变量设置为 aarch64-linux-gnu-,即所有交叉编译的命令(如 gcc, g++, ld 等)都将自动带上 aarch64-linux-gnu- 前缀。

4. 测试交叉编译工具链

到此为止,工具链已经安装成功。接下来,开启新终端窗口,可查看编译器版本。

aarch64-linux-gnu-gcc -v

如果成功,应该会显示类似于以下的版本信息:


5. 使用交叉编译工具链编译程序

现在,你已经可以开始使用交叉编译工具链来为 ARM64 架构编译程序了,比如编译U-Boot工程文件。

6.参考

ubuntu搭建aarch64-linux-gnu交叉编译环境_ubuntu22.04 aarch64-linux-gnu不包含gdb-CSDN博客文章浏览阅读3.5k次,点赞3次,收藏6次。ubuntu搭建aarch64-linux-gnu交叉编译环境_ubuntu22.04 aarch64-linux-gnu不包含gdb https://blog.csdn.net/s_mzh/article/details/122836234?ops_request_misc=&request_id=&biz_id=102&utm_term=ubuntu%E9%85%8D%E7%BD%AEaarch64-linux-gnu&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-122836234.142^v102^pc_search_result_base2&spm=1018.2226.3001.4187【正点原子I.MX6ULL】二、配置交叉编译工具链,编译U-boot和Linux内核源码-CSDN博客文章浏览阅读3k次,点赞3次,收藏16次。本文详细介绍了如何配置交叉编译工具链,包括交叉编译器的安装、相关库的安装及环境变量的设置。并通过编译U-boot源码和Linux内核源码的实际操作,生成了u-boot.bin、zImage和dtb文件,为嵌入式系统的开发提供了实用的指导。 https://blog.csdn.net/ReCclay/article/details/107152005

 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐