编译器框架 - 2023.2 简体中文

Vitis 统一软件平台文档 嵌入式软件开发 (UG1400)

Document ID
UG1400
Release Date
2023-12-13
Version
2023.2 简体中文

本节主要探讨 MicroBlaze™ 以及 Cortex® A9、A53、A72 和 R5 处理器编译器的常用功能特性。下图显示了 GNU 工具流程。

图 1. GNU 工具流程
GNU 编译器命名方式如下:
  • mb-gcc 适用于 MicroBlaze
  • arm-none-eabi-gcc 适用于 Cortex A9 核
  • aarch64-none-elf-gcc 适用于 Cortex-A53Cortex-A72
  • armr5-none-eabi-gcc 适用于 Cortex-R5F

GNU 编译器是封装文件,可调用以下可执行文件:

预处理器 (cpp0)
这是编译器调用的首次直通。预处理器将所有宏都替换为源文件和头文件中定义的定义。
特定于机器和语言的编译器
此编译器用于处理第一阶段中输出并经过预处理的代码。特定于语言的编译器包括:
C 语言编译器 (cc1)
此编译器负责在输入 C 语言代码上完成的大部分最优化操作,并负责生成汇编代码。
C++ 语言编译器 (cc1plus)
此编译器负责在输入 C++ 语言代码上完成的大部分最优化操作,并负责生成汇编代码。
汇编程序
汇编代码在汇编语言中包含助记符。汇编程序会将这些助记符转换为机器语言。汇编程序还会对该编译器生成的部分标签进行解析。它会创建对象文件,并将其传递到连接器。汇编程序可执行文件命名方式如下:
  • mb-as 适用于 MicroBlaze
  • arm-none-eabi-as 适用于 Cortex A9 核
  • aarch64-none-elf-as 适用于 Cortex-A53Cortex-A72
  • armr5-none-eabi-as 适用于 Cortex-R5F
连接器
用于链接由汇编程序生成的所有对象文件。如果在公共行上提供了库,那么连接器会通过链入部分来自汇编程序的函数,对代码中部分未定义的引用进行解析。连接器可执行文件命名方式如下:
  • mb-ld 适用于 MicroBlaze
  • arm-none-eabi-ld 适用于 Cortex A9 核
  • aarch64-none-elf-ld 适用于 Cortex-A53Cortex-A72
  • armr5-none-eabi-ld 适用于 Cortex-R5F

在以下章节中对可执行文件选项进行了描述:

注释: 从此处开始,本章节中对 GCC 的引用均表示 MicroBlaze 编译器 mb-gcc,对 G++ 的引用则表示 MicroBlaze C++ 编译器 mb-g++