Hoe bepaal je of een bepaalde Linux 32 bit of 64 bit is?

Als ik uname -a typ, geeft het de volgende uitvoer.

Linux mars 2.6.9-67.0.15.ELsmp #1 SMP Tue Apr 22 13:50:33 EDT 2008 i686 i686 i386 GNU/Linux

Hoe kan ik hieruit opmaken of het opgegeven OS 32 of 64 bit is?

Dit is handig bij het schrijven van configure scripts, bijvoorbeeld: voor welke architectuur ben ik aan het bouwen?

Oplossing

Probeer uname -m. Dat is een afkorting van uname --machine en het geeft uitvoer:

x86_64 ==> 64-bit kernel
i686   ==> 32-bit kernel

Anders, niet voor de Linux kernel, maar voor de CPU, typ je:

cat /proc/cpuinfo

of:

grep flags /proc/cpuinfo

Onder "flags" parameter, zult u verschillende waarden zien: zie "Wat betekenen de vlaggen in /proc/cpuinfo?" Onder hen, is één genaamd lm: Long Mode (x86-64: amd64, ook bekend als Intel 64, d.w.z. 64-bit geschikt)

lm ==> 64-bit processor

Of met lshw (zoals hieronder genoemd door Rolf van Saksen), zonder sudo (alleen voor het greppen van de cpu breedte):

lshw -class cpu|grep "^       width"|uniq|awk '{print $2}'

Note: je kunt een 64-bit CPU hebben met een 32-bit kernel geïnstalleerd.
(zoals ysdx vermeldt in zijn/haar eigen antwoord, "Tegenwoordig kan een systeem multiarch zijn, dus het heeft sowieso geen zin. Je zou de standaard target van de compiler kunnen vinden")

Commentaren (13)

Als u op een 64 bit platform draait, zou u x86_64 of iets heel gelijkaardigs zien in de uitvoer van uname -a

Om de hardware-naam van uw specifieke machine te krijgen, voert u

uname -m

U kunt ook

getconf LONG_BIT

die ofwel 32 of 64 teruggeeft

Commentaren (6)

Dat systeem is 32bit. iX86 in uname betekent dat het een 32-bit architectuur is. Als het 64 bit was, zou het teruggeven

Linux mars 2.6.9-67.0.15.ELsmp #1 SMP Tue Apr 22 13:50:33 EDT 2008 x86_64 i686 x86_64 x86_64 GNU/Linux
Commentaren (1)