<分区>
谁能解释一下工具链对操作系统和平台架构的依赖性,例如,如果我想为 arm 架构编译代码,我应该寻找平台架构还是平台运行的操作系统,然后使工具链适应它?
<分区>
谁能解释一下工具链对操作系统和平台架构的依赖性,例如,如果我想为 arm 架构编译代码,我应该寻找平台架构还是平台运行的操作系统,然后使工具链适应它?
最佳答案
大多数编译器将它们的代码编译成汇编语言。它们生成的代码很可能取决于对操作系统的各种调用(例如,分配动态内存),并且具有定义文件属性的 header ,例如代码和数据部分的位置(例如 ELF、PE)。然后,汇编器将该程序集编译为目标文件,这些文件使用该平台的链接器进行链接。所有这些工具都为特定架构和操作系统生成代码。
这并不意味着编译器和链接器不能在另一种类型的系统上运行。为另一个系统编译代码的过程称为交叉编译。尽管这不如针对与编译器运行的相同平台进行编译那么常用,但它却很常用。这方面的几个例子是编译操作系统内核,这当然不能依赖另一个操作系统,或者为 Android 编译 native 代码(android NDK 包含一个交叉编译器)。
关于c++ - 工具链如何与操作系统和平台架构相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34461115/