工具链如何与 OS 和平台架构相关

How toolchain is related to OS and platform architecture

有人可以解释工具链对 OS 和平台架构的依赖性吗,例如,如果我想为 arm 架构编译代码,我应该寻找平台架构还是 OS 该平台是运行 然后调整工具链?

大多数编译器将它们的代码编译成汇编语言。它们生成的代码很可能取决于对操作系统的各种调用(例如分配动态内存),并具有 header 定义文件属性,例如代码和数据部分的位置(例如 ELF、PE ).然后,汇编程序将该程序集编译为 object 文件,这些文件使用该平台的链接器进行链接。所有这些工具都为特定架构和 OS.

生成代码

这并不意味着编译器和链接器不能在另一种类型的系统上运行。为另一个系统编译代码的过程称为cross-compiling。尽管这不如编译器 运行s 在同一平台上编译那么常用,但它很常用。这方面的几个例子是编译 OS 内核,这当然不能依赖另一个 OS,或者编译 Android 的本机代码(android NDK 包含一个 cross-compiler).