我想知道如何在/ 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?
答案 0 :(得分:10)
它被称为Universal binary。简而言之,可执行文件包含两种类型的可执行代码。 Apple有published document描述了开发人员应该如何构建他们的应用程序以在任一平台上运行。
可执行文件lipo
可用于从文件中删除任一版本的可执行文件。如果您希望可执行文件只包含一个版本,则可以使用lipo
来实现此目的。
请注意,不仅仅是ppc
和i386
,尽管这些是为Universal二进制文件选择的“最安全”架构。阅读arch
的联机帮助页;在那里,您可以看到现代OSX二进制文件可能包含ppc
,ppc64
,i386
或x86_64
中的任何一个。列出了更多,但它们存在完整性。
答案 1 :(得分:5)
它被称为fat binary。
二进制文件中有两种体系结构的本机代码副本。二进制格式和操作系统必须支持它,因此它可以知道在文件中查找正确代码的位置。