Die Antwort auf die Frage im Titel steht direkt am Anfang der Ausgabe:
ELF 64-Bit- LSB-Programm, x86-64
ELF ist das ausführbare und verknüpfbare Format , das von Linux am häufigsten verwendete ausführbare Binärdateiformat.
x86-64 ist die Architektur der Binärdatei, der 64-Bit-Version des ursprünglich von AMD eingeführten x86-Befehlssatzes . Aus Gründen, die mir unverständlich sind, nennt Microsoft es "x64", aber das ist das Gleiche.
Wenn Sie die Architektur des Kernels selbst kennen müssen, können Sie verwenden uname -mpi
. Auf meinem System wird beispielsweise Folgendes gedruckt:
x86_64 unbekannt unbekannt
Das bedeutet, dass ich einen x86-64-Kernel verwende.
Wenn Sie an der CPU selbst interessiert sind, informieren Sie sich /proc/cpuinfo
über die vom Linux-Kernel erkannten CPUs.
Eine ausführbare 32-Bit-80x86-Datei wird beispielsweise folgendermaßen identifiziert file
:
ELF 32-Bit- LSB- Programm , Intel 80386 , Version 1 (SYSV), dynamisch verknüpft (verwendet gemeinsam genutzte Bibliotheken), für GNU / Linux 2.6.8, entfernt
Dies sagt uns, dass es sich um eine 32-Bit-ausführbare Datei handelt, die den Intel 80386-Befehlssatz verwendet (möglicherweise mit Erweiterungen).
Beachten Sie, dass dies nicht ganz so einfach ist wie bei 32-Bit- oder 64-Bit-Architekturen. Zum Beispiel der Linux - Kernel unterstützt 32-Bit - Architekturen wie Intel 80386, AVR32 , S / 390 und Unicore32 . Auf der 64-Bit-Seite ist Linux unter anderem auf PA-RISC , x86-64, Itanium und Alpha einsetzbar . Allerdings bieten nicht alle Distributionen Binärdateien für alle Architekturen (und ich bezweifle, dass es Distributionen gibt, die alle unterstützten CPU-Architekturen gleichermaßen zum Ziel haben). Wenn Sie also wissen möchten, ob eine bestimmte Binärdatei auf einem bestimmten System ausführbar ist, müssen Sie die Architektur und nicht die native Wortgröße der CPU berücksichtigen .
Das 5. Byte einer ausführbaren Linux-Binärdatei ( ELF-Format, siehe Wikipedia ) ist 1 für eine ausführbare 32-Bit-Datei, 2 für eine ausführbare 64-Bit-Datei.
Um dies für ein Programm mit dem Namen "foo" anzuzeigen, geben Sie in die Befehlszeile ein
quelle
Wenn Sie das "Kopf" -Rohr vermeiden möchten, können Sie dies tun
Dies gibt 01 aus, wenn es sich bei foo um eine 32-Bit-Binärdatei handelt, und 02, wenn es sich um eine 64-Bit-Binärdatei handelt. Möglicherweise enthält sie noch einige führende Leerzeichen.
Wenn dies in einem einfachen Ubuntu Docker-Container nützlich ist, in dem 'file' nicht installiert wurde.
quelle