【问题标题】:How do programs support i386 and ppc at the same time?程序如何同时支持 i386 和 ppc?
【发布时间】:2009-07-19 00:37:10
【问题描述】:

我想知道如何为 /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 中的哪些组件?

【问题讨论】:

    标签: macos architecture powerpc i386


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      它被称为fat binary

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-18
        • 2012-09-11
        • 1970-01-01
        • 2022-08-16
        • 2011-10-31
        • 2014-12-05
        • 1970-01-01
        • 2010-12-09
        相关资源
        最近更新 更多