Puede utilizar el file
para ver para qué arquitecturas un binario (o biblioteca) incluye código nativo. El procesador M1 utiliza la arquitectura ARM de 64 bits, por lo que aparecerá como "arm64". No tengo un Mac M1 ni ningún binario sólo para ARM a mano, pero compara el Chrome (sólo para Intel) y Firefox (binario "universal"/"gordo" que soporta tanto Intel como ARM) en mi Mac:
$ file /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome
/Applications/Google Chrome.app/Contents/MacOS/Google Chrome: Mach-O 64-bit executable x86_64
$ file /Applications/Firefox.app/Contents/MacOS/firefox
/Applications/Firefox.app/Contents/MacOS/firefox: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64:Mach-O 64-bit executable arm64]
/Applications/Firefox.app/Contents/MacOS/firefox (for architecture x86_64): Mach-O 64-bit executable x86_64
/Applications/Firefox.app/Contents/MacOS/firefox (for architecture arm64): Mach-O 64-bit executable arm64
Y aquí hay una biblioteca:
$ file /Applications/Firefox.app/Contents/MacOS/libmozglue.dylib
/Applications/Firefox.app/Contents/MacOS/libmozglue.dylib: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit dynamically linked shared library x86_64] [arm64:Mach-O 64-bit dynamically linked shared library arm64]
/Applications/Firefox.app/Contents/MacOS/libmozglue.dylib (for architecture x86_64): Mach-O 64-bit dynamically linked shared library x86_64
/Applications/Firefox.app/Contents/MacOS/libmozglue.dylib (for architecture arm64): Mach-O 64-bit dynamically linked shared library arm64
Actualización: He comprobado un Mac M1, y parece que tiene binarios gordos Intel+ARM (que es lo mismo que Big Sur instalado en un Mac Intel):
$ file /System/Applications/Chess.app/Contents/MacOS/Chess
/System/Applications/Chess.app/Contents/MacOS/Chess: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64e:Mach-O 64-bit executable arm64e]
/System/Applications/Chess.app/Contents/MacOS/Chess (for architecture x86_64): Mach-O 64-bit executable x86_64
/System/Applications/Chess.app/Contents/MacOS/Chess (for architecture arm64e): Mach-O 64-bit executable arm64e
Tenga en cuenta que la arquitectura aparece como "arm64 e ". La "e" es un indicador de subarquitectura; véase esta pregunta para más información. Mirando en /usr/share/file/magic/mach (que contiene los códigos mágicos file
utiliza para reconocer estos tipos de archivos), también hay una subarquitectura "arm64_v8" (que creo que esta pregunta direcciones).
Y sólo para divertirse, aquí está la aplicación de ajedrez desde hace mucho tiempo en OS X v10.5, que incluía código nativo tanto para PowerPC como para Intel, cada uno en 32 y 64 bits:
$ file /Applications/Chess.app/Contents/MacOS/Chess
/Applications/Chess.app/Contents/MacOS/Chess: Mach-O universal binary with 4 architectures
/Applications/Chess.app/Contents/MacOS/Chess (for architecture ppc): Mach-O executable ppc
/Applications/Chess.app/Contents/MacOS/Chess (for architecture ppc64): Mach-O 64-bit executable ppc64
/Applications/Chess.app/Contents/MacOS/Chess (for architecture i386): Mach-O executable i386
/Applications/Chess.app/Contents/MacOS/Chess (for architecture x86_64): Mach-O 64-bit executable x86_64
2 votos
Relacionado apple.stackexchange.com/questions/408596/
1 votos
Preste atención a que en MacOS (con su arquitectura "Universal Binary") no es un binario M1 O un binario x86, sino And/Or -- y también hay más arquitecturas soportadas.