通用二进制(Universal binary)是
苹果电脑公司提出的一种程序代码,使程序能以本地程序的形式运行在使用PowerPC或者
英特尔微处理器(
x86)的
麦金塔电脑上,在同一个程序包中同时为两种架构提供最理想的性能。硬件方面,苹果电脑公司已经将其产品线上的所有
麦金塔电脑在
2006年内转为
英特尔处理器,相对应的
软件方面,苹果最早是在2005年世界开发者大会(WWDC)上就发布了通用二进制的内容来适应这种转换。 当程序在操作系统中运行后,将自动检测通用
二进制代码,根据使引用的架构自动选择合适的代码来执行,实现无损的本地程序运行速度。
通用
二进制代码有两种基本类型。一种类型就是简单提供两种独立的
二进制代码,一个用来对应
x86架构,一个用来对应PowerPC架构。但是对于不熟悉代码的普通
软件使用者来说,在购买和使用的时候,可能搞不清二者区别。另外一种类型就是只编写一个架构的代码,当另外一种处理环境时让系统自动调用模拟器运行。这会导致运行速度下降,一般是作为“通用二进制”或者“特别连编二进制”出现之前暂时使用的折衷办法。(参见
Rosetta.)
因为需要储存多种代码,通用二进制应用程序通常比单一平台二进制的程序要大,但是由于两种架构有共通的非执行资源,所以并不会达到单一版本的两倍之多。而且由于执行中只调用一部分代码,运行起来也不需要额外的
内存。
截至2006年10月,苹果公司的
Xcode是唯一一个可以编译通用
二进制代码的
GUI工具。一个使用processor-independence开发的简单应用程序只需要改动很少的部分就可以实现通用二进制。但是对于那些基于要发挥一种架构特长的复杂程序来说,修改代码通过连编就是一个比较复杂的工程。 使用其他开发工具制作的应用程序需要额外的修改。正因为这些原因,导致目前
英特尔麦金塔电脑和那些第三方制作的通用二进制
软件不能同步的现象。而苹果在硬件方面的转换比预定计划提前了好几个月,也是造成这种差距的另外一个因素。
苹果公司的
Xcode 2.4版本将通用二进制的概念进一步推广,支持创建四架构二进制(对应
英特尔和
PowerPC中32位和64位平台),因此可以让一个执行程序在所有
Mac OS X机器上运行。
尽管如此,一些高端的常用应用程序还没有通用二进制版本,比如
微软公司的Microsoft Office 2004等等。这些产品目前必须使用Rosetta
编译器在
英特尔麦金塔电脑上运行。结果导致目前的
Adobe Photoshop版本在
英特尔麦金塔电脑上运行,要比在
PowerPC处理器的麦金塔电脑,甚至比
视窗系统中运行还要缓慢。
Adobe公司已经声明,不会发布现有产品的通用二进制版本,而是转而在未来发布的新版本中进行通用二进制化。