应用程序种类(通用与苹果硅)
Kind of apps (universal vs. apple silicon)
如果我在系统信息中查看我的应用程序列表,一些应用程序具有 'kind' 通用和其他应用程序 'Apple Silicon'。有什么区别?
谢谢!
Mach-O可执行格式在同一个可执行文件中支持多种架构,如aarch64
、x86_64
、ppc
等。这样的文件通常在Apple 营销术语,因为它允许在不同平台上轻松传送和执行单个二进制文件。
这在 00 年代的 PowerPC->Intel 过渡期间帮助了 Apple,现在正在重复使用相同的概念来平滑 x86_64->AArch64 过渡。
“Apple Silicon” 只是 Apple 用来指代他们内部设计的基于 AArch64
的芯片(移动和台式机)的营销术语。您可以将其视为 "AArch64".
的同义词
回到您的问题,系统信息->软件->应用程序中显示的 kind
字段显示您计算机上安装的应用程序是针对哪些平台构建的。
“Apple Silicon”应用程序将仅包含为 AArch64 构建的代码,“Intel”应用程序将仅 运行 x86_64,而“通用”应用程序将包含两者的代码。
您还可以使用 XCode 中的 lipo
工具来检查给定的 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)
如您所见,Firefox 和系统提供的 ls
都已作为胖二进制文件构建和交付。
如果我在系统信息中查看我的应用程序列表,一些应用程序具有 'kind' 通用和其他应用程序 'Apple Silicon'。有什么区别?
谢谢!
Mach-O可执行格式在同一个可执行文件中支持多种架构,如aarch64
、x86_64
、ppc
等。这样的文件通常在Apple 营销术语,因为它允许在不同平台上轻松传送和执行单个二进制文件。
这在 00 年代的 PowerPC->Intel 过渡期间帮助了 Apple,现在正在重复使用相同的概念来平滑 x86_64->AArch64 过渡。
“Apple Silicon” 只是 Apple 用来指代他们内部设计的基于 AArch64
的芯片(移动和台式机)的营销术语。您可以将其视为 "AArch64".
回到您的问题,系统信息->软件->应用程序中显示的 kind
字段显示您计算机上安装的应用程序是针对哪些平台构建的。
“Apple Silicon”应用程序将仅包含为 AArch64 构建的代码,“Intel”应用程序将仅 运行 x86_64,而“通用”应用程序将包含两者的代码。
您还可以使用 XCode 中的 lipo
工具来检查给定的 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)
如您所见,Firefox 和系统提供的 ls
都已作为胖二进制文件构建和交付。