Řešení 1:
"uname -m" je příkaz, který hledáte. Na moderních procesorech Intel a AMD můžete provozovat 32bit i 64bit, takže "uname -p" vám nepomůže (navíc to dnes většinou nefunguje, tady core2 myslí odpověď na "uname -p" je "neznámý").
Hledání existence /usr/lib64 (jak bylo navrženo) vám také nepomůže, protože některé balíčky související s hardwarem a systémem nainstalují 32bitové i 64bitové knihovny, aby byly na bezpečné straně. Na mém (debian) systému to dělá právě balíček fakeroot.
Pokud jde o výstup "uname -m", pokud je to i386 nebo i686, je to 32bit, pokud je to x86_64 (nebo alpha, nebo ia64 nebo nějaká jiná 64bitová architektura, kterou jsem nikdy neviděl :) je 64bit.
(jako zábavu stranou, můj 64bitový server FreeBSD vrací "amd64", což může být pro čtyřjádro Intel trochu divné, ale zcela pochopitelné, pokud znáte historii x86 64bitové architektury)
Řešení 2:
uname -a a vyhledejte x86_64. Pokud chcete vědět, zda váš CPU zvládne 64bit, cat /proc/cpuinfo a hledejte lm mezi příznaky.
Řešení 3:
pro RedHat/CentOS:
$ uname -a
Linux cs-centos 2.6.18-92.1.22.el5 #1 SMP Tue Dec 16 12:03:43 EST 2008 i686 athlon i386 GNU/Linux
32bitový
- i686 a/nebo i386
64bitový
- by měl x86_64 v uname -a výstup
Řešení 4:
Abychom to zmátli, můžete spustit 64bitové jádro s 32bitovou uživatelskou zemí, což je to, co dělám. V tomto případě uname -m
vrátí x86_64
ale nemám nainstalované žádné 64bitové knihovny, takže většina 64bitových programů nepoběží.
Jakmile tedy zkontrolujete uname, musíte hledat /lib64/ld-linux-x86-64.so.2
, /lib64/libc-2.7.so
a /lib/ld-linux.so.2
, /lib/libc-2.7.so
zjistit, zda jsou k dispozici 64bitové a 32bitové knihovny. A abyste se skutečně ujistili, spusťte tyto soubory a zjistěte, zda se spouštějí správně.
Další užitečnou informací je výstup lsb_release -a
což je cross-distro a bude hlásit, jaké moduly LSB specifické pro architekturu jsou k dispozici.
Řešení 5:
$> getconf LONG_BIT
Odpověď:32 nebo 64.