Ich möchte überprüfen, ob eine bestimmte statische iPhone-Bibliothek für ARM oder Intel erstellt wurde.
Es ist mehr Neugier als alles andere. Gibt es dafür ein Mac OS X- oder BSD-spezifisches Tool? Dieser Beitrag enthält ein Beispiel unter Linux.
Ich möchte überprüfen, ob eine bestimmte statische iPhone-Bibliothek für ARM oder Intel erstellt wurde.
Es ist mehr Neugier als alles andere. Gibt es dafür ein Mac OS X- oder BSD-spezifisches Tool? Dieser Beitrag enthält ein Beispiel unter Linux.
Eine andere Option ist lipo
; Die Ausgabe ist kurz und besser lesbar als otool
die.
Ein Beispiel:
% 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
werde es dir wahrscheinlich sagen.otool
sollte sicherlich in der Lage sein. Aber ich würde esfile
zuerst versuchen , zBeispiel mit Archiv:
quelle
file
scheitert oft.Wie bereits erwähnt,
file
funktioniert nicht immer.otool -hv -arch all
ist wahrscheinlich das Nächste, was garantiert funktioniert - es liefert Architekturinformationen für jede einzelne Objektdatei in der Bibliothek.Beispiel:
quelle
Als Alternative habe ich festgestellt,
objdump
kann gut funktionieren. In meiner Umgebung erstelle ich beispielsweise Bibliotheksarchive mit vxWorks und muss diese mit anderen Projekten verknüpfen. Um zu testen, ob das Archiv die richtige Architektur hat, könnte ich Folgendes tun (Bash-Syntax):Dieses Beispiel ist nicht genau richtig, da einige Zeilen angezeigt werden, die nicht elf32-sparc-vxworks sagen, aber es ist einfach genug, dies anzupassen.
Ein netter Vorteil davon ist, dass
objdump
oder eine ähnlich benannte Variante auf den meisten * nix-Betriebssystemen installiert ist, während Tools, die in anderen Antworten vorgeschlagen werden, dies nicht sind.edit Mir ist gerade eingefallen, dass das OP unter OSX gefragt hat. Entschuldigen Sie.
quelle
objdump
Sie die GNU Binutils über MacPorts installieren. Um alle verfügbaren Architekturen zu sehen, führen Sie sie einfach ausport search binutils
. Den Tools für die native Entwicklung wird ein Präfix vorangestellt, um Konflikte zu vermeiden (z . B.gobjdump
anstelle vonobjdump
). Möglicherweise möchten Sie der Einfachheit halber einen Alias erstellen.Mit diesem Bash-Skript können Sie programmgesteuert eine Liste von Architekturen in eine Variable umwandeln.
list_archs.sh:
Anwendungsbeispiel:
quelle