Estoy interesado en verificar si una biblioteca estática de iPhone se ha creado para ARM o Intel.
Es más curiosidad que otra cosa. ¿Hay algún tipo de herramienta específica de Mac OS X o BSD para hacer esto? Esta publicación da un ejemplo en Linux.
Estoy interesado en verificar si una biblioteca estática de iPhone se ha creado para ARM o Intel.
Es más curiosidad que otra cosa. ¿Hay algún tipo de herramienta específica de Mac OS X o BSD para hacer esto? Esta publicación da un ejemplo en Linux.
Otra opción es lipo; su salida es breve y más legible que la de otool's.
Un ejemplo:
% lipo -info /usr/lib/libiodbc.a
Architectures in the fat file: /usr/lib/libiodbc.a are: x86_64 i386 ppc
% lipo -info libnonfatarchive.a
input file libnonfatarchive.a is not a fat file
Non-fat file: libnonfatarchive.a is architecture: i386
%
fileprobablemente te lo diga.otoolciertamente debería poder hacerlo. Perofileprimero lo intentaría , por ejemploEjemplo con archivo:
fuente
filemenudo falla.Como se mencionó anteriormente,
fileno siempre funciona.otool -hv -arch alles probablemente lo más cercano a lo que se garantiza que funcione: proporciona información de arquitectura para cada archivo de objeto en la biblioteca.Ejemplo:
% otool -hv /sw/lib/libfftw3.a Archivo: /sw/lib/libfftw3.a /sw/lib/libfftw3.a(align.o): Encabezado Mach magic cputype cpusubtype caps tipo de archivo ncmds sizeofcmds flags MH_MAGIC_64 X86_64 TODO 0x00 OBJETO 3 336 SUBSECCIONES_VIA_SÍMBOLOS /sw/lib/libfftw3.a(alloc.o): Encabezado Mach magic cputype cpusubtype caps tipo de archivo ncmds sizeofcmds flags MH_MAGIC_64 X86_64 TODOS 0x00 OBJETO 3 416 SUBSECCIONES_VIA_SÍMBOLOS ...fuente
Como alternativa, descubrí que
objdumppuede funcionar bien. Como ejemplo, en mi entorno construyo archivos de biblioteca con vxWorks y necesito vincularlos a otros proyectos. Para probar si el archivo es la arquitectura correcta, podría hacer algo como lo siguiente (sintaxis bash):Este ejemplo no es exactamente correcto, porque aparecen algunas líneas que no dicen elf32-sparc-vxworks, pero es bastante fácil adaptar esto.
Un buen beneficio de esto es que
objdump, o una variante con un nombre similar, está instalada en la mayoría de los sistemas operativos * nix, mientras que las herramientas sugeridas en otras respuestas no lo están.editar Se me ocurrió que el OP estaba preguntando sobre OSX. Mis disculpas.
fuente
objdumppuede instalar GNU Binutils a través de MacPorts. Para ver todas las arquitecturas disponibles, simplemente ejecuteport search binutils. Las herramientas para el desarrollo nativo tienen el prefijo para evitar conflictos (por ejemplo, engobjdumplugar deobjdump). Es posible que desee crear un alias por conveniencia.Este script bash lo ayudará a obtener programáticamente una lista de arquitecturas en una variable.
list_archs.sh:
Ejemplo de uso:
fuente