-
Můžete zjistit, zda CPU je 64bitový, 32bitový nebo umožňuje obojí zaškrtnutím
flags
řádek v/proc/cpuinfo
. Musíte znát možné příznaky vaší rodiny architektury. Například na platformách i386/amd64lm
příznak identifikuje CPU podporující amd64 (CPU, které tento příznak nemají, jsou pouze i386).grep -q '^flags\s*:.*\blm\b' /proc/cpuinfo # Assuming a PC
-
Můžete zjistit, zda je jádro 32bitové nebo 64bitové, dotazem na architekturu pomocí
uname -m
. Napříkladi[3456]86
jsou 32bitové, zatímcox86_64
je 64bitový. Všimněte si, že na několika architekturách může 64bitové jádro spouštět 32bitové uživatelské programy, takže i kdyžuname -m
zobrazuje 64bitové jádro, není zaručeno, že budou dostupné 64bitové knihovny.[ "$(uname -m)" = "x86_64" ] # Assuming a PC
Všimněte si také, že
uname -m
může vrátit „virtualizovanou“ hodnotu. Například pod Linuxem, pokud spustítesetarch i386 bash
na systému amd64 a spustíteuname -m
z tohoto bashu uvidíteuname -m
hlášeníi386
. To vám efektivně umožňuje předstírat, že jste na „32bitovém systému“, i když je jádro 64bitové, například pro kompilaci 32bitových programů bez nastavení křížové kompilace. -
Co je k dispozici v uživatelské zemi, můžete zjistit dotazem na podporu LSB pomocí
lsb_release
příkaz. Přesnějilsb_release -s
vypíše:
-samostatný seznam podporovaných funkcí LSB. Každý prvek má tvarmodule-version-architecture
. Například dostupnost knihovny ix86 C je označenacore-2.0-ia32
, zatímcocore-2.0-amd64
je analog pro amd64. Ne každá distribuce však deklaruje všechny dostupné moduly LSB, takže jich může být k dispozici více, než je tímto způsobem zjistitelné. -
Upřednostňovanou velikost slova pro vývoj (za předpokladu, že je k dispozici kompilátor C) můžete zjistit zkompilováním 5řádkového programu C, který vypíše
sizeof(void*)
nebosizeof(size_t)
.
Můžete použít uname -a
a vyhledejte x86_64
abyste zjistili, zda používáte 64bitovou verzi. Cokoli jiného (pokud vím) a používáte 32bitovou verzi nebo používáte hardware jiného než PC, jako je alpha
, sparc
nebo ppc64
.
uname -m | sed 's/x86_//;s/i[3-6]86/32/'