编译器库 - 2023.2 简体中文

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

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

mb-gcc 编译器需要使用 GNU C 标准库和 GNU 数学库。Vivado 中随附有这些库的预编译版本。MicroBlaze 的 CPU 驱动程序会根据 MicroBlaze 的硬件配置来复制正确版本的预编译库。如果您想要手动选择要使用的库版本,请打开以下文件夹:

$XILINX_/gnu/microblaze/<platform>/microblaze-xilinx-elf/lib

其中的文件名是根据编译器标志和库编译时使用的配置进行编码所得。例如,libc_m_bs.a 表示使用编译器中启用的硬件乘法器和桶式移位器进行编译的 C 语言库。

下表显示了当前所使用的编码以及此编码所指定的库配置。

表 1. 编译器标志所对应的编码库文件名
编码 描述
_bs 专为桶式移位器而配置。
_m 专为硬件乘法器而配置。
_p 专为模式比较器而配置。

特别值得注意的是数学库文件 (libm*.a)。C 语言标准需要通用的数学库函数(例如,sin() 和 cos())才能使用双精度浮点算术。但双精度浮点算术可能无法充分使用 MicroBlaze 可用的可选单精度浮点功能。

newlib 数学库具有替代版本,可使用单精度算术来实现这些数学函数。这些单精度库可以直接使用 MicroBlaze 处理器硬件浮点单元 (FPU),因而性能更强大。

如果您确定自己的应用无需使用标准精度,并且您想要提升性能,那么可以手动更改链入的库的版本。

默认情况下,CPU 驱动程序会将库的双精度版本 (libm_*_fpd.a) 复制到您的 IP integrator 工程中。

要获取单精度版本,您可以创建定制 CPU 驱动程序,以便改为复制对应的 libm_*_fps.a 库。请将对应的 libm_*_fps.a 文件作为 libm.a 复制到您的处理器库文件夹(例如,microblaze_0/lib 中)。

复制完要使用的库之后,请重构应用软件工程。