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
%
file
probablemente te lo diga.otool
ciertamente debería poder hacerlo. Perofile
primero lo intentaría , por ejemploEjemplo con archivo:
fuente
file
menudo falla.Como se mencionó anteriormente,
file
no siempre funciona.otool -hv -arch all
es 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:
fuente
Como alternativa, descubrí que
objdump
puede 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
objdump
puede 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, engobjdump
lugar 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