Odpověď na otázku v nadpisu je hned na začátku výstupu:
ELF 64bitový Spustitelný soubor LSB, x86-64
ELF je Executable and Linkable Format, binární formát spustitelných souborů nejběžněji používaný Linuxem.
x86-64 je architektura binárního systému, 64bitové verze instrukční sady x86 původně představené AMD. Z důvodů, které jsou mimo mě, to Microsoft označuje jako „x64“, ale to je totéž.
Pokud potřebujete znát architekturu samotného jádra, můžete použít uname -mpi
. Například v mém systému se vypíše:
x86_64 neznámý neznámý
což znamená, že používám jádro x86-64.
Pokud vás zajímá samotný CPU, podívejte se na /proc/cpuinfo
podrobnosti o CPU detekovaných linuxovým jádrem.
32bitový spustitelný soubor 80x86 je označen file
jako například:
ELF 32bitový Spustitelný soubor LSB, Intel 80386 , verze 1 (SYSV), dynamicky propojená (používá sdílené knihovny), pro GNU/Linux 2.6.8, zbavena
což nám říká, že se jedná o 32bitový spustitelný soubor využívající instrukční sadu Intel 80386 (možná s rozšířeními).
Všimněte si, že to není tak jednoduché jako 32bitové versus 64bitové architektury. Například linuxové jádro podporuje 32bitové architektury jako Intel 80386, AVR32, S/390 a Unicore32. Na 64bitové stránce je Linux použitelný mimo jiné na PA-RISC, x86-64, Itanium a Alpha. Ne všechny distribuce však poskytují binární soubory pro všechny architektury (a pochybuji, že existují distribuce, které cílí na všechny stejně podporované architektury CPU). Pokud tedy chcete vědět, zda bude daný binární soubor na daném systému spustitelný, musíte zvážit architekturu , spíše než nativní velikost slova CPU.
5. bajt linuxového binárního spustitelného souboru (formát ELF, viz Wikipedia) je 1 pro 32bitový spustitelný soubor, 2 pro 64bitový spustitelný soubor.
Chcete-li to zobrazit pro program s názvem "foo", zadejte na příkazovém řádku
od -t x1 -t c foo | head -n 2
Pokud se chcete vyhnout 'hlavové' trubce, můžete
od -An -t x1 -j 4 -N 1 foo
Tím se vytiskne 01, pokud je foo 32bitový binární soubor, a 02, pokud je 64. Stále může obsahovat nějaké úvodní mezery – stojí za to vědět, zda provádíte nějaké automatické porovnávání výsledků.
Pokud to bylo užitečné v základním kontejneru Ubuntu Docker, kde nebyl nainstalován „soubor“.