Ich hatte eine statische Bibliotheksdatei. Wie kann ich sehen, ob es in i386 oder in Arm-Plattform kompiliert ist. Danke.
So sehen Sie die Kompilierungsplattform einer statischen Bibliotheksdatei
seanxiaoxiao
Yves Baumes
objdump
ist dein Freund 😉
$ objdump -f lib/lib.a
-
Danke 😀 einfach als Datei kopieren, dann archivieren und schließlich verwenden
file
.– oho
13. Februar 2012 um 13:35 Uhr
-
objdump ist besser, da die Ausgabe der Datei etwas eingeschränkt sein kann.
– Robert
30. Oktober 2014 um 17:00 Uhr
Tim Čas
In Unix- (und ähnlichen – beispielsweise Linux- oder Minix-) Systemen können Sie das Dienstprogramm “Datei” verwenden:
%file /lib/libc.so.7
libc.so.7: ELF 64-bit LSB shared object, x86-64, version 1 (FreeBSD), dynamically linked, stripped
(Die %
zeigt eine Shell-Eingabeaufforderung an und ist nicht Teil des Befehls)
Bei Windows weiß ich nicht, ob bereits ein integrierter Befehl vorhanden ist, aber wenn nicht, finden Sie das Dienstprogramm auf dieser Seite: http://gnuwin32.sourceforge.net/packages.html (Die file
Paket ist etwa 1/3 auf der Seite).
BEARBEITEN: Für statische Bibliotheken (.a
Dateien), müssen Sie sie zuerst extrahieren und überprüfen a .o
Datei:
%cp /usr/lib/libchipmunk.a .
%ar -x libchipmunk.a
%file *.o
chipmunk.c.o: ELF 64-bit LSB relocatable, x86-64, version 1 (FreeBSD), not stripped
<snip>
WARNUNG: ar -x ...
wird das lokale Verzeichnis verschmutzen, also Stellen Sie sicher, dass Sie die Dateien an einen anderen Ort kopieren (z /tmp/something
) Erste!
Ich bin mir sicher, dass es eine Möglichkeit gibt, direkt in diese Dateien einzuchecken, aber das funktioniert genauso gut!
-
Der Befehl file gibt nicht so viele Informationen für eine statische Bibliothek (.a-Dateien) aus.
– Yves Baumes
13. Februar 2012 um 13:09 Uhr
Verwenden file
oder objdump
. file
funktioniert aber immer objdump
gibt Ihnen detailliertere Informationen über Bibliotheken und Archive und ausführbare Dateien.
file
gibt Ihnen allgemeine Informationen über die Plattform unter Linux.
z.B
file /usr/lib/libfoo.a
oder für eine ausführbare Binärdatei
file `which foo`
Für Bibliotheken, die mit iOS-Apps verknüpft sind, sehen Sie hier die Architekturen einer .a-Datei:
file /path/to/library.a
Beispielausgabe für eine Bibliothek, die für armv7, armv7s (iPhone 5), arm64, x86_64 und i386 erstellt wurde:
/path/to/library.a: Mach-O universal binary with 5 architectures: [i386:Mach-O object i386] [x86_64:Mach-O 64-bit object x86_64] [arm_v7:Mach-O object arm_v7] [arm_v7s:Mach-O object arm_v7s] [arm64]
/path/to/library.a (for architecture i386): Mach-O object i386
/path/to/library.a (for architecture x86_64): Mach-O 64-bit object x86_64
/path/to/library.a (for architecture armv7): Mach-O object arm_v7
/path/to/library.a (for architecture armv7s): Mach-O object arm_v7s
/path/to/library.a (for architecture arm64): Mach-O 64-bit object arm64
Siehe dann meine Antwort – viele wissen es nicht (obwohl Sie als Programmierer es wahrscheinlich wissen), Mac OS X ist ein vollwertiges Unix-System 🙂
– Tim Čas
13. Februar 2012 um 13:05 Uhr