ARM 交叉编译工具链
## 交叉编译
交叉编译通俗地讲就是**在一种平台上编译出能运行在体系结构不同的另一种平台上的程序**,比如在 PC 平台(X86 CPU)上编译出能运行在以 ARM 为内核的 CPU 平台上的程序,编译得到的程序在 X86 CPU 平台上是不能运行的,必须放到 ARM CPU 平台上才能运行,虽然两个平台用的都是 Linux 系统。
![](https://file.mculoop.com/images/2023/12/28/202312282312231.png)
交叉编译工具链是一个由编译器、连接器和解释器组成的综合开发环境,交叉编译工具链主要由 binutils、gcc 和 glibc 三个部分组成。有时出于减小 libc 库大小的考虑,也可以用别的 c 库来代替 glibc,例如 uClibc、dietlibc 和 newlib。建立交叉编译工具链是一个相当复杂的过程,如果不想自己经历复杂繁琐的编译过程,网上有一些编译好的可用的交叉编译工具链可以下载,但就以 学习为目的来说读者有必要学习自己制作一个交叉编译工具链(目前来看,对于初学者没有太大必要自己交叉编译一个工具链)。
## 分类和说明
从授权上,分为免费授权版和付费授权版。
**免费版**目前有三大主流工具商提供,第一是 GNU(提供源码,自行编译制作),第二是 Codesourcery,第三是 Linora。
- arm-none-linux-gnueabi-gcc:是 Codesourcery 公司(目前已经被 Mentor 收购)基于 GCC 推出的的 ARM 交叉编译工具。可用于交叉编译 ARM(32位)系统中所有环节的代码,包括裸机程序、u-boot、Linux kernel、filesystem 和 App 应用程序。
- arm-linux-gnueabihf-gcc:是由 Linaro 公司基于 GCC 推出的的 ARM 交叉编译工具。可用于交叉编译 ARM(32位)系统中所有环节的代码,包括裸机程序、u-boot、Linux kernel、filesystem 和 App 应用程序。
- aarch64-linux-gnu-gcc:是由 Linaro 公司基于 GCC 推出的的 ARM 交叉编译工具。可用于交叉编译 ARMv8 64 位目标中的裸机程序、u-boot、Linux kernel、filesystem 和 App 应用程序。
- arm-none-elf-gcc:是 Codesourcery 公司(目前已经被 Mentor 收购)基于 GCC 推出的的 ARM 交叉编译工具。可用于交叉编译ARM MCU(32位)芯片,如 ARM7、ARM9、Cortex-M/R 芯片程序。
- arm-none-eabi-gcc:是 GNU 推出的的ARM交叉编译工具。可用于交叉编译 ARM MCU(32位)芯片,如 ARM7、ARM9、Cortex-M/R 芯片程序。
**收费版**有 ARM 原厂提供的 armcc、IAR 提供的编译器等等,因为这些价格都比较昂贵,不适合学习用户使用,所以不做讲述。
页:
[1]