我试图理解为什么我们需要交叉编译器,我发现如果我们需要在不同的平台上生成二进制文件,我们需要一个交叉编译器来生成目标平台的二进制文件。 我的问题是,交叉编译器与操作系统有什么关系吗? 示例如果我在带有ARM处理器的Windows机器上运行编译器,生成的二进制文件是否可以直接运行在ARM处理器上运行的Linux机器上?编译器是否在二进制文件周围添加了任何特定的包装器,以便操作系统理解它?
感谢您的回复
答案 0 :(得分:2)
二进制格式通常是特定于操作系统的,它们反过来触摸代码生成:
除此之外,编译器通常会对链接器进行调用,这也可能需要额外的细节知识。
所以它肯定是一种交叉形式。交叉到足以构建一个单独的编译器?这很难说。但是没有人说过两种不同的架构也是两个独立的二进制文件。这只是惯例和架构的结果。
E.g。 Free Pascal在同一架构上不需要单独的二进制文件来进行跨操作系统编译,因此Linux编译器可以生成Windows二进制文件。甚至更强大,Linux编译器还具有内置相应体系结构的win32 / 64汇编器,归档器和链接器。