5

我想知道如何为 /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 架构的支持,您可以删除哪些组件,例如 /bin/amber 中的哪些组件?

4

2 回答 2

10

它被称为通用二进制文件。简而言之,可执行文件包含这两种类型的可执行代码。Apple 发布了一份文档,描述了开发人员应如何构建他们的应用程序以在任一平台上运行。

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

请注意,不仅仅是ppcand i386,尽管这些是为通用二进制文件选择的“最安全”的架构。阅读手册页arch;在那里您可以看到现代 OSX 二进制文件可能包含ppcppc64或. 列出的还有更多,但它们的存在是为了完整性。i386x86_64

于 2009-07-19T00:45:22.923 回答
5

它被称为胖二进制文件

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

于 2009-07-19T00:46:49.477 回答