So sehen Sie die Kompilierungsplattform einer statischen Bibliotheksdatei

Lesezeit: 2 Minuten

Benutzeravatar von seanxiaoxiao
seanxiaoxiao

Ich hatte eine statische Bibliotheksdatei. Wie kann ich sehen, ob es in i386 oder in Arm-Plattform kompiliert ist. Danke.

  • 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

Benutzeravatar von Yves Baumes
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

Benutzeravatar von Tim Čas
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

1443920cookie-checkSo sehen Sie die Kompilierungsplattform einer statischen Bibliotheksdatei

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy