第二阶段初始化文件 - 2023.2 简体中文

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

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

根据 C 语言标准规范,所有全局变量和静态变量都必须初始化为 0。这是以上所有 CRT 都需要的常用功能。此外,还会调用另一个例程:_crtinit_crtinit 例程用于对程序的 .bss 部分中的存储器进行初始化。_crtinit 例程也是用于调用 main 过程的封装文件。调用 main 过程前,它可能调用其他初始化函数。_crtinit 例程由如下所述启动文件来提供。

crtinit.o

这是默认第二阶段 C 语言启动文件,用于执行以下步骤:

  1. .bss 部分清零。
  2. 调用 _program_init
  3. 调用构造函数 (_init)。
  4. 为 main 设置实参,并调用 main。
  5. 调用析构函数 (_fini)。
  6. 调用 _program_clean 并返回。
pgcrtinit.o

这是剖析期间使用的第二阶段启动文件,用于执行以下步骤:

  1. .bss 部分清零。
  2. 调用 _program_init
  3. 调用 _profile_init 以初始化剖析库。
  4. 调用构造函数 (_init)。
  5. 为 main 设置实参,并调用 main。
  6. 调用析构函数 (_fini)。
  7. 调用 _profile_clean 以清理剖析库。
  8. 调用 _program_clean,然后返回。
sim-crtinit.o

这是在编译器中使用 -mno-clearbss 开关时,所使用的第二阶段启动文件,用于执行以下步骤:

  1. 调用 _program_init
  2. 调用构造函数 (_init)。
  3. 为 main 设置实参,并调用 main。
  4. 调用析构函数 (_fini)。
  5. 调用 _program_clean,然后返回。
sim-pgcrtinit.o

这是剖析期间搭配 -mno-clearbss 开关一起使用的第二阶段启动文件,用于按如下顺序执行下列步骤:

  1. 调用 _program_init
  2. 调用 _profile_init 以初始化剖析库。
  3. 调用构造函数 (_init)。
  4. 为 main 设置实参,并调用 main。
  5. 调用析构函数 (_fini)。
  6. 调用 _profile_clean 以清理剖析库。
  7. 调用 _program_clean,然后返回。