应用程序类型(通用与苹果芯片)

Ste*_*eve 7 macos apple-m1

如果我查看系统信息中的应用程序列表,一些应用程序具有“某种”通用性,而其他应用程序具有“Apple Silicon”。有什么区别?

谢谢!

mci*_*oni 10

Mach-O 可执行格式支持同一可执行文件中的多种体系结构,例如aarch64x86_64ppc等。在苹果营销术语中,这样的文件通常被称为“胖二进制文件”通用应用程序”,因为它允许单个二进制文件轻松地在不同平台上传送和执行。

这在 00 年代的 PowerPC->Intel 过渡期间为 Apple 提供了帮助,现在也重复使用相同的概念来平滑 x86_64->AArch64 过渡。

“Apple Silicon”只是苹果公司用来指代AArch64其内部设计的芯片(移动和桌面)的营销术语。您可以将其视为“AArch64”的同义词。

回到您的问题,kind系统信息->软件->应用程序中显示的字段显示您计算机上安装的应用程序是针对哪些平台构建的。“Apple Silicon”应用程序将仅包含为 AArch64 构建的代码,“Intel”应用程序将仅在 x86_64 下运行,而“通用”应用程序将包含两者的代码。

您还可以使用lipoXCode 中的工具来检查给定的 Mach-O 二进制文件包含哪些架构:

$ lipo -detailed_info /Applications/Firefox.app/Contents/MacOS/firefox
Fat header in: /Applications/Firefox.app/Contents/MacOS/firefox
fat_magic 0xcafebabe
nfat_arch 2
architecture x86_64
    cputype CPU_TYPE_X86_64
    cpusubtype CPU_SUBTYPE_X86_64_ALL
    capabilities CPU_SUBTYPE_LIB64
    offset 4096
    size 41728
    align 2^12 (4096)
architecture arm64
    cputype CPU_TYPE_ARM64
    cpusubtype CPU_SUBTYPE_ARM64_ALL
    capabilities 0x0
    offset 49152
    size 91232
    align 2^14 (16384)
$ lipo -detailed_info /bin/ls
Fat header in: /bin/ls
fat_magic 0xcafebabe
nfat_arch 2
architecture x86_64
    cputype CPU_TYPE_X86_64
    cpusubtype CPU_SUBTYPE_X86_64_ALL
    capabilities 0x0
    offset 16384
    size 59536
    align 2^14 (16384)
architecture arm64e
    cputype CPU_TYPE_ARM64
    cpusubtype CPU_SUBTYPE_ARM64E
    capabilities PTR_AUTH_VERSION USERSPACE 0
    offset 81920
    size 75440
    align 2^14 (16384)
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,Firefox 和系统提供的ls都是以胖二进制文件的形式构建和发布的。