-
Puoi vedere se la CPU è a 64 bit, 32 bit o compatibile con entrambi controllando
flags
riga in/proc/cpuinfo
. Devi conoscere i possibili flag sulla tua famiglia di architettura. Ad esempio, sulle piattaforme i386/amd64, illm
flag identifica le CPU compatibili con amd64 (le CPU che non hanno quel flag sono solo i386).grep -q '^flags\s*:.*\blm\b' /proc/cpuinfo # Assuming a PC
-
Puoi vedere se il kernel è a 32 o 64 bit interrogando l'architettura con
uname -m
. Ad esempio,i[3456]86
sono a 32 bit mentrex86_64
è a 64 bit. Si noti che su diverse architetture, un kernel a 64 bit può eseguire programmi utente a 32 bit, quindi anche seuname -m
mostra un kernel a 64 bit, non vi è alcuna garanzia che le librerie a 64 bit saranno disponibili.[ "$(uname -m)" = "x86_64" ] # Assuming a PC
Nota anche che
uname -m
può restituire un valore "virtualizzato". Ad esempio, sotto Linux, se eseguisetarch i386 bash
su un sistema amd64 e eseguiuname -m
da quel bash, vedraiuname -m
segnalazionei386
. Ciò ti consente effettivamente di fingere di essere su un "sistema a 32 bit" anche se il kernel è a 64 bit, ad esempio per compilare programmi a 32 bit senza impostare la compilazione incrociata. -
Puoi vedere cosa è disponibile in userland interrogando il supporto LSB con
lsb_release
comando. Più precisamente,lsb_release -s
stampa un:
elenco separato delle funzionalità LSB supportate. Ogni elemento ha la formamodule-version-architecture
. Ad esempio, la disponibilità di una libreria C ix86 è indicata dacore-2.0-ia32
, mentrecore-2.0-amd64
è l'analogo per amd64. Tuttavia, non tutte le distribuzioni dichiarano tutti i moduli LSB disponibili, quindi potrebbero essere disponibili più moduli di quelli rilevabili in questo modo. -
Puoi scoprire la dimensione della parola preferita per lo sviluppo (supponendo che sia disponibile un compilatore C) compilando un programma C di 5 righe che stampa
sizeof(void*)
osizeof(size_t)
.
Puoi usare uname -a
e cerca x86_64
per vedere se stai utilizzando 64 bit. Qualsiasi altra cosa (per quanto ne so) e stai utilizzando 32 bit o sei su hardware non PC come alpha
, sparc
o ppc64
.
uname -m | sed 's/x86_//;s/i[3-6]86/32/'