【发布时间】:2020-03-11 10:46:44
【问题描述】:
我正在为 arm Cortex-A5 cpu 创建我自己的自定义 gcc 工具链,我正在尝试尽可能深入地了解每个步骤。我故意避免使用 crosstool-ng 或其他工具来协助,以便更好地了解创建工具链的过程中发生的事情。
但有一件事让我很困惑。在 binutils 的配置和构建过程中,我需要指定一个目标(--target)。此目标可以是经典的主机元组(例如:arm-none-linux-gnuabi)或特定类型,例如 i686-elf。
为什么需要这个目标?它对 binutils 生成的“as”和“ld”程序有什么特别的作用?
例如,如果我使用 arm-none-linux-gnueabi 构建它,看起来生成的“as”程序支持阳光下的所有 arm 指令集(armv4t、armv5 等)。
仅仅是为了节省生成的可执行文件的空间吗?还是有更多的事情发生?
如果我为特定指令集配置 binutils,我会明白的。为我构建一个能够理解 armv4t 指令的汇编程序。
查看 binutils 和 gas 的来源,看起来主机元组正在选择一些位于 gas/config/tc*、gas/config/te* 中的头文件。同样,这似乎是任意的,因为它是广泛的系统类别。
对不起,漫无边际:) 我想我的问题可以表述为:为什么 binutils 不是一个一体化软件包?
【问题讨论】: