单个编译的C程序如何在多个体系结构上运行?

时间:2015-01-07 14:22:18

标签: c architecture compilation

以某个网站下载的程序为例,可供选择的不同选项是通常的操作系统(Linux,Mac,Windows),但CPU架构又如何呢?该程序是二进制可执行文件。它只是假设amd64吗?或者,该程序是否已编译到所有受支持的体系结构中,并与顶部的脚本一起打包,选择正确的程序?

我只对C感兴趣并想知道这是如何实现的。


在进一步调查中,由于以下个人提供的可靠信息,我在Fat Binaries获得了Mac和Linux的支持。它似乎不像windows supports那样。

1 个答案:

答案 0 :(得分:0)

Mac OS X二进制格式包括一种在同一文件中为多个体系结构提供代码的机制,因此单个Mac应用程序可以支持32位和64位x86;在最近的过去,PowerPC的支持也是可能的,尽管现在已经过时了。但是对于Windows和Linux,你通常需要为每个CPU架构提供单独的二进制文件(正如评论指出的那样,虽然它远非标准实践,但可以通过类似的方式进行评审,但是默认情况下,目前最常见的是amd64,但有时您仍会看到32位计算机的单独下载。在这方面,世界曾经更有趣,但现在事情比以往更加标准化了。