本节主要探讨 MicroBlaze™ 以及 Cortex® A9、A53、A72 和 R5 处理器编译器的常用功能特性。下图显示了 GNU 工具流程。
图 1. GNU 工具流程
GNU 编译器命名方式如下:
-
mb-gcc
适用于 MicroBlaze -
arm-none-eabi-gcc
适用于 Cortex A9 核 -
aarch64-none-elf-gcc
适用于 Cortex-A53 和 Cortex-A72 -
armr5-none-eabi-gcc
适用于 Cortex-R5F
GNU 编译器是封装文件,可调用以下可执行文件:
- 预处理器 (
cpp0
) - 这是编译器调用的首次直通。预处理器将所有宏都替换为源文件和头文件中定义的定义。
- 特定于机器和语言的编译器
- 此编译器用于处理第一阶段中输出并经过预处理的代码。特定于语言的编译器包括:
- C 语言编译器 (
cc1
) - 此编译器负责在输入 C 语言代码上完成的大部分最优化操作,并负责生成汇编代码。
- C++ 语言编译器 (
cc1plus
) - 此编译器负责在输入 C++ 语言代码上完成的大部分最优化操作,并负责生成汇编代码。
- C 语言编译器 (
- 汇编程序
- 汇编代码在汇编语言中包含助记符。汇编程序会将这些助记符转换为机器语言。汇编程序还会对该编译器生成的部分标签进行解析。它会创建对象文件,并将其传递到连接器。汇编程序可执行文件命名方式如下:
-
mb-as
适用于 MicroBlaze -
arm-none-eabi-as
适用于 Cortex A9 核 -
aarch64-none-elf-as
适用于 Cortex-A53 和 Cortex-A72 -
armr5-none-eabi-as
适用于 Cortex-R5F
-
- 连接器
- 用于链接由汇编程序生成的所有对象文件。如果在公共行上提供了库,那么连接器会通过链入部分来自汇编程序的函数,对代码中部分未定义的引用进行解析。连接器可执行文件命名方式如下:
-
mb-ld
适用于 MicroBlaze -
arm-none-eabi-ld
适用于 Cortex A9 核 -
aarch64-none-elf-ld
适用于 Cortex-A53 和 Cortex-A72 -
armr5-none-eabi-ld
适用于 Cortex-R5F
-
在以下章节中对可执行文件选项进行了描述:
注释: 从此处开始,本章节中对 GCC 的引用均表示 MicroBlaze 编译器
mb-gcc
,对 G++ 的引用则表示 MicroBlaze C++ 编译器 mb-g++
。