Kaip nustatyti, ar tam tikra "Linux" yra 32 ar 64 bitų?

Kai įvedu uname -a, gaunamas toks išvesties tekstas.

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

Kaip iš to sužinoti, kad nurodyta OS yra 32 ar 64 bitų?

Tai naudinga rašant configure skriptus, pavyzdžiui: kokiai architektūrai aš kuriu?

Sprendimas

Pabandykite uname -m. Tai trumpinys iš uname --machine, kuris išveda:

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

Kitu atveju, ne "Linux" branduoliui, o procesoriui, įveskite:

cat /proc/cpuinfo

arba:

grep flags /proc/cpuinfo

Parametre "flags" matysite įvairias reikšmes: žr. "Ką reiškia /proc/cpuinfo vėliavos?" Viena iš jų pavadinta lm: Long Mode (x86-64: amd64, taip pat žinoma kaip Intel 64, t. y. galima naudoti 64 bitus).

lm ==> 64-bit processor

Arba naudojant lshw (kaip toliau paminėjo Rolfas iš Saksonijos), be sudo (tik procesoriaus pločiui nustatyti):

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

Pastaba: galite turėti 64 bitų procesorių su įdiegtu 32 bitų branduoliu.
(kaip ysdx mini savo atsakyme, "Šiais laikais sistema gali būti daugiaarchitektūrinė, todėl vis tiek nėra prasmės. Galbūt norėsite rasti numatytąjį kompiliatoriaus tikslą")

Komentarai (13)

Jei naudojate 64 bitų platformą, išvestyje iš uname -a pamatytumėte x86_64 arba kažką labai panašaus.

Norėdami sužinoti konkretaus kompiuterio aparatinės įrangos pavadinimą, paleiskite

uname -m

Taip pat galite skambinti

getconf LONG_BIT

kuris grąžina 32 arba 64

Komentarai (6)

Ši sistema yra 32 bitų. iX86 raidė uname reiškia, kad tai 32 bitų architektūra. Jei ji būtų 64 bitų, būtų grąžinama

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
Komentarai (1)