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



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

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


在进一步的调查中,由于下面个人提供的可爱信息,我遇到了在Mac和Linux上都支持的胖二进制文件。似乎Windows不支持它。

Mac

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

最新更新