è il mio Linux ARM a 32 o 64 bit?

sotto unintelligence so di poter esaminare il risultato di uname -m per sapere se il mio sistema operativo è 32 o 64 bit, ma sotto ARM questo dà:

armv7l 

Ho dedotto da

file /usr/bin/ls 

che sono su un sistema operativo a 32 bit, ma come posso sapere in modo più semplice?

Commenti

  • arm 7 è a 32 bit . ARMv8-A architecture, announced in October 2011,[6] adds support for a 64-bit address space and 64-bit arithmetic. – wikipedia
  • @richard immaginavo di sì, ma allora qual è il nome della variante a 64 bit?
  • I non ‘ t avere accesso a una macchina ARM ma qual è loutput di uname -a e gcc -v? Potrebbero essere utili.
  • Announced October 2011, ARMv8-A (often called ARMv8 although not all variants are 64-bit such as ARMv8-R) represents a fundamental change to the ARM architecture. It adds a 64-bit architecture, named "AArch64", and a new "A64" instruction set. AArch64 provides user-space compatibility with ARMv7-A ISA, the 32-bit architecture, therein referred to as "AArch32" and the old 32-bit instruction set, now named "A32" ARM announced their Cortex-A53 and Cortex-A57 cores on 30 October 2012. en.wikipedia.org/wiki/ARM_architecture#64.2 F32-bit_architecture
  • Arm è stata lultima delle cpu a 32 bit a passare a 64 bit (escluse quelle morte). La maggior parte è andata a 64 bit e poi è morta, a causa di una cattiva pubblicità, supponendo che sia b meglio è abbastanza. LIntel x86 è stato il penultimo, anche se è stata AMD ad aggiungere 64 bit.

Answer

Ecco sono diverse gradazioni, poiché è possibile eseguire un sistema operativo a 32 bit o misto su una CPU compatibile con 64 bit. Vedi kernel a 64 bit, ma tutti i processi eseguibili ELF a 32 bit in esecuzione, comè questo? per una discussione dettagliata (scritto per x86, ma la maggior parte si applica da armare).

Puoi trovare il modello del processore in /proc/cpuinfo. Ad esempio:

$ cat /proc/cpuinfo Processor : ARMv7 Processor rev 10 (v7l) 

ARMv7 (e sotto) è a 32 bit. ARMv8 introduce il set di istruzioni a 64 bit.

Se vuoi vedere se il tuo sistema supporta binari a 64 bit, controlla larchitettura del kernel :

$ uname -m armv7l 

Su un processore a 64 bit, “dovresti vedere una stringa che inizia con armv8 (o superiore ) se il uname stesso è un processo a 32 bit, o aarch64 se “è un processo a 64 bit. (Vedi anche https://stackoverflow.com/questions/45125516/possible-values-for-uname-m )

Commenti

  • Non ‘ t contestare la tua risposta, ma sfortunatamente Android È UN LINUX, quindi, supponiamo che ci sia qualche comando, DA QUALCHE PARTE che lo mostri localmente e non per leggere un documentazione su qualche pagina
  • @THESorcerer Android usa un kernel Linux ma non è un sistema Linux. Non ha strumenti di terra per utenti Linux (solo un piccolo sottoinsieme). Su Android, penso che il supporto a 64 bit sia coerente nel sistema operativo di base, quindi cat /proc/$$/maps ti farà sapere se il sistema è a 64 bit o 32 bit da una riga di comando adb.
  • Credo che Raspberry Pi 3, che è ARMv8 (CRC, nessuna crittografia opzionale) riporterà armv7l anche se ARMv8. Quindi ‘ sono abbastanza sicuro che verrà segnalata la CPU sbagliata.
  • @jww Se riporta armv7l, significa che ‘ stai utilizzando un kernel a 32 bit. È possibile eseguire un kernel a 32 bit su una CPU a 64 bit. Se desideri informazioni sulla CPU, leggi /proc/cpuinfo.
  • uname -m restituisce solo ” aarch64 “. / proc / cpuinfo non ‘ t contiene sempre un nome per un processore.

Risposta

Come sottolinea Richard, armv7 le varianti sono tutte a 32 bit, quindi non esiste unetichetta ridondante armv7-32 , ecc.

Su un sistema Linux, puoi facilmente, anche se non in modo definitivo, controllare esaminando un eseguibile comune:

> which bash /bin/bash > file /bin/bash /bin/bash: ELF 32-bit LSB executable, ARM, version 1 (SYSV) ... 

Dico “non in modo definitivo” perché è possibile eseguire eseguibili a 32 bit su un sistema a 64 bit.

Non sembra esserci nulla di infallibile in /proc o /sys; loutput di /proc/cpuinfo potrebbe fornire alcuni indizi significativi. Se per qualche motivo hai bisogno di un controllo automatico, la creazione di una tabella mappata al campo “nome modello” sembra un metodo potenzialmente valido (altri campi, inclusi “modello”, “famiglia cpu”, ecc. Sembrano opzionali – non lo fanno ” non mi appare affatto su un processore ARMv6 Broadcom 2708).

Commenti

  • Quindi armv7l è a 32 bit giusto?
  • @bakalolo Leggi lentamente la domanda e la risposta accettata;)

Risposta

Installa il pacchetto “lshw” .

# lshw ... description: Computer product: Raspberry Pi 3 Model B Rev 1.2 width: 32 bits ... 

Risposta

Sembra che la maggior parte dei modi per vedere il conteggio dei bit sia in qualche modo sappi che arm7 = 32 bit e anche se potrebbe essere vero ma per quanto riguarda

pi@rpi9:~ $ getconf LONG_BIT 32 

E se vuoi cercare il modello di cpu io normalmente uso arch

root@rpi4:~# tr "\0" "\n" </proc/device-tree/model;arch Raspberry Pi Model B Rev 2 armv6l pi@rpi9:~ $ tr "\0" "\n" </proc/device-tree/model;arch Raspberry Pi 3 Model B Rev 1.2 armv7l 

Commenti

  • getconf LONG_BIT è molto semplice

Risposta

Prova quanto segue.

 // -*- compile-command: "gcc -Wall -o sizeof sizeof.c && ./sizeof" -*- #include <stdio.h> #include <limits.h> #define size(t) { t x; printf("%s:\t%3lu bit\n", #t, CHAR_BIT * sizeof x); } int main (int argc, char *argv[]) { size(char); size(short); size(int); size(long); size(void*); return 0; }  

La dimensione dellindirizzo è void*.

Commenti

Risposta

No, “un computer a 64 bit. È un Allwinner H8 , la strega è un doppio ARM-7. 8 core, 64 bit, powervr, sgx 544, a doppia velocità (700 mhz).

Quindi no, può essere a 64 bit. Solo il sistema operativo potrebbe essere 32.

Commenti

  • dove hai scoperto che lOP ‘ utilizza Allwinner H8? Larchitettura è armv7l che chiaramente non è un Uno a 64 bit
  • È ‘ meglio dimostrare un modo per trovare le informazioni desiderate allinterno del sistema invece di utilizzare un terzo -informazioni di parti da fonti esterne. Questo è più adatto per essere un commento che una risposta (quindi tutti i voti negativi).

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *