In LINUX feststellen ob eine .a Bibliothek / Archiv 32-Bit oder 64-Bit?
Vertreiben wir unter Linux eine statische lib, die in 64-bit-und 32-bit-Versionen. Fehlerbehebung bei einem Kunden, möchte ich meine Diagnose-shell-Skript schnell zu beseitigen das Problem, indem Sie überprüfen die .eine Archiv-Datei zu detetmine, ob es 32 oder 64 bit. Die Methoden, die mir kommen, sind weniger als elegant:
- extrahieren .o Mitglied und bitte den "Datei" - Befehl (z.B., ELF 32-bit etc)
- starten, darunter eine dummy-Mitglied codiert, um anzuzeigen, z.B. 32bit.o/64bit.o, und verwenden Sie "ar -t", um zu überprüfen
Ich habe versucht, "strings xyz.a | grep 32", aber das funktioniert nicht gut über Versionen. Nicht ein Herzensbrecher problem, aber wenn Sie wissen, eine elegante Lösung ist, würde ich gerne wissen.
InformationsquelleAutor der Frage cvsdave | 2011-04-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
objdump
scheint, wie der beste Weg ist:InformationsquelleAutor der Antwort caf
Der einfachste Weg ist, um die Datei-Befehl.
InformationsquelleAutor der Antwort pankaj kapoor
Verwenden Sie einfach den Befehl Datei; d.h.
file library.so
InformationsquelleAutor der Antwort Erik
Wenn es gibt Funktionen, die spezifisch für eine bestimmte version, die Sie könnten versuchen, nm dann Suche nach der Funktion.
InformationsquelleAutor der Antwort ColWhi
Nur eine Antwort:
Wie soll es funktionieren:
In einer 32 bit-Umgebung, Sie bekommen Adressen aus 8 hex-Ziffern, indem man das neue line gibt Ihnen
9
In einer 64bit-Umgebung erhalten Sie Adressen, bestehend aus 16 hex-Ziffern, indem man das neue line gibt Ihnen17
.InformationsquelleAutor der Antwort Petesh