通用二进制

通用二进制（）是苹果电脑公司提出的一种程序代码，使程序能以本地程序的形式运行在使用PowerPC或者英特尔微处理器（x86）的麦金塔电脑上，在同一个程序包中同时为两种架构提供最理想的性能。硬件方面，苹果电脑公司已经将其产品线上的所有麦金塔电脑在2006年内转为英特尔处理器，相对应的软件方面，苹果最早是在2005年蘋果電腦全球研發者大會上就发布了通用二进制的内容来适应这种转换。  

当程序在操作系统中运行后，将自动检测通用二进制代码，然后根据使用的架构自动选择合适的代码来执行，因此实现无损的本地程序运行速度。

概要
通用二进制代码有两种基本类型。一种类型就是简单提供两种独立的二进制代码，一个用来对应x86架构，一个用来对应PowerPC架构。但是对于不熟悉代码的普通软件使用者来说，在购买和使用的时候，可能搞不清二者区别。另外一种类型就是只编写一个架构的代码，当另外一种处理环境时让系统自动调用模拟器运行。这会导致运行速度下降，一般是作为“通用二进制”或者“特别连编二进制”出现之前暂时使用的折衷办法。（参见Rosetta）

因为需要储存多种代码，通用二进制应用程序通常比单一平台二进制的程序要大，但是由于两种架构有共通的非执行资源，所以并不会达到单一版本的两倍之多。而且由于执行中只调用一部分代码，运行起来也不需要额外的内存。

在1990年代中期从68k处理器转换到PowerPC的时候，苹果电脑公司使用了一个类似的技术。当时这些双平台可执行程序被称为 ""，因为他们文件容量比原来要大。

目前，苹果公司的Xcode是唯一一个可以编译通用二进制代码的GUI工具。一个使用processor-independence开发的简单应用程序只需要改动很少的部分就可以实现通用二进制。但是对于那些基于要发挥一种架构特长的复杂程序来说，修改代码通过连编就是一个比较复杂的工程。 使用其他开发工具制作的应用程序需要额外的修改。正因为这些原因，导致目前英特尔麦金塔电脑和那些第三方制作的通用二进制软件不能同步的现象。而苹果在硬件方面的转换比预定计划提前了好几个月，也是造成这种差距的另外一个因素。 

苹果公司的Xcode 2.4版本将通用二进制的概念进一步推广，支持创建四架构二进制（对应英特尔和PowerPC中32位和64位平台），因此可以让一个执行程序在所有Mac OS X机器上运行。

通用应用程序

2005年蘋果電腦全球研發者大會以来，很多软件开发者都已经为其产品提供了通用二进制代码。到2008年12月，苹果官方网站列出了超过7500种通用应用程序。

尽管如此，一些老舊的應用程式與遊戲还没有通用二进制版本，如暴雪的星海爭霸。这些产品目前必须使用Rosetta编译器在英特尔麦金塔电脑上运行。在Adobe Photoshop推出適用於英特尔麦金塔电脑运行的版本前，該軟體要比在PowerPC处理器的麦金塔电脑，甚至比Microsoft Windows系统中运行还要缓慢。Adobe公司已经声明，不会发布舊产品的通用二进制版本，而是转而在未来发布的新版本中进行通用二进制化。 微软也发布了类似的声明。

2007年4月16日，Adobe发布了Adobe Creative Suite 3，该产品第一个使用通用二进制格式的版本。

在2008年3月，许多Mac OS X的程序已经被转换成了通用二进制格式，包括QuarkXPress，Apple的Final Cut Studio，Adobe Creative Suite，Microsoft Office 2008和Shockwave Player（11版以后）。其余只有PowerPC版本的程序在Intel处理器的Mac上运行时必须使用Rosetta。

随着Mac OS X 10.6 Snow Leopard的发布，由于系统仅支持Intel处理器等原因，部分程序已经去除了对PowerPC处理器的支持。

通用二进制2 

苹果在2020年6月的WWDC中宣布了其将Mac迁移至苹果芯片的计划，同时发布了通用二进制2，供开发者同时支持x86-64和ARM64。整个迁移将持续“大约两年”。

参见
英特尔
苹果电脑公司

注释

外部链接

苹果开发者关于通用二进制代码编程指南的介绍简体中文 

MacOS
可执行文件格式