程序如何同时支持i386和ppc?

时间:2009-07-19 00:37:11

标签: macos architecture powerpc i386

我想知道如何在/ bin支持i386和ppc架构。

我跑了

bin  $ file amber

我得到了

amber: setgid Mach-O universal binary with 2 architectures
amber (for architecture i386):  Mach-O executable i386
amber (for architecture ppc):   Mach-O executable ppc

程序如何在源代码中支持i386和ppc?

换句话说,如果删除ppc -architecture的支持,可以删除哪些组件,例如/ bin / amber?

2 个答案:

答案 0 :(得分:10)

它被称为Universal binary。简而言之,可执行文件包含两种类型的可执行代码。 Apple有published document描述了开发人员应该如何构建他们的应用程序以在任一平台上运行。

可执行文件lipo可用于从文件中删除任一版本的可执行文件。如果您希望可执行文件只包含一个版本,则可以使用lipo来实现此目的。

请注意,不仅仅是ppci386,尽管这些是为Universal二进制文件选择的“最安全”架构。阅读arch的联机帮助页;在那里,您可以看到现代OSX二进制文件可能包含ppcppc64i386x86_64中的任何一个。列出了更多,但它们存在完整性。

答案 1 :(得分:5)

它被称为fat binary

二进制文件中有两种体系结构的本机代码副本。二进制格式和操作系统必须支持它,因此它可以知道在文件中查找正确代码的位置。