er min Linux ARM 32 eller 64 bit? (Norsk)

under et intel jeg vet at jeg kan se på resultatet av uname -m for å vite om operativsystemet mitt er 32 eller 64 bit, men under ARM gir dette:

armv7l 

Jeg har trukket ut fra

file /usr/bin/ls 

at jeg er på et 32-biters operativsystem, men hvordan kan jeg vite dette på en enklere måte?

Kommentarer

  • arm 7 er 32 bit . ARMv8-A architecture, announced in October 2011,[6] adds support for a 64-bit address space and 64-bit arithmetic. – wikipedia
  • @richard Jeg gjettet på det, men hva heter da 64-biters varianten?
  • I don ‘ t har tilgang til en ARM-maskin, men hva er utdataene fra uname -a og gcc -v? Disse kan være nyttige.
  • 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_arkitektur
  • Arm var den siste av 32-bits CPU-en som gikk 64-biters (unntatt de som døde). De fleste gikk 64-biters og døde deretter på grunn av dårlig markedsføring – forutsatt at de var b etter er nok. Intel x86 var den nest siste, selv om det var AMD som la til 64 bit.

Svar

Der er flere graderinger, siden du kan kjøre et 32-biters eller blandet operativsystem på en 64-biters CPU. Se 64-biters kjerne, men alle 32-biters ELF-kjørbare prosesser, hvordan er dette? for en detaljert diskusjon (skrevet for x86, men det meste gjelder å arme også).

Du finner prosessormodellen i /proc/cpuinfo. For eksempel:

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

ARMv7 (og under) er 32-bit. ARMv8 introduserer 64-biters instruksjonssett.

Hvis du vil se om systemet ditt støtter 64-bits binærfiler, sjekk kjernearkitekturen :

$ uname -m armv7l 

På en 64-biters prosessor ser du en streng som begynner med armv8 (eller over ) hvis uname selve prosessen er en 32-biters prosess, eller aarch64 hvis den er en 64-biters prosess. (Se også https://stackoverflow.com/questions/45125516/possible-values-for-uname-m )

Kommentarer

  • Jeg ikke ‘ t bestrider svaret ditt, men dessverre er android EN LINUX, så antar det å være noen kommando, NÅGONS som viser det lokalt og ikke å lese en dokumentasjon på noen side
  • @THESorcerer Android bruker en Linux-kjerne, men det er ikke et Linux-system. Den har ikke Linux-brukerverktøy (bare et veldig lite delmengde). På Android tror jeg 64-biters støtte er konsistent i grunn-OS, så cat /proc/$$/maps vil fortelle deg om systemet er 64-bit eller 32-bit fra en ADB-kommandolinje.
  • Jeg tror at Raspberry Pi 3, som er ARMv8 (CRC, ingen valgfri Crypto), vil rapportere armv7l selv om det er ARMv8. Så jeg ‘ er ganske sikker på at feil CPU vil bli rapportert.
  • @jww Hvis den rapporterer armv7l, er det betyr at du ‘ kjører en 32-biters kjerne. Du kan kjøre en 32-biters kjerne på en 64-biters CPU. Hvis du vil ha informasjon om CPUen, kan du lese /proc/cpuinfo.
  • uname -m returnerer bare » aarch64 «. / proc / cpuinfo inneholder ikke ‘ t alltid et navn på en prosessor.

Svar

Som richard påpeker, armv7 varianter er alle 32-bit, så det er ingen overflødig etikett armv7-32 osv.

På et linux-system kan du enkelt, men ikke helt definitivt, sjekke ved å undersøke en vanlig kjørbar:

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

Jeg sier «ikke definitivt» fordi det er mulig å kjøre 32-bits kjørbare filer på et 64-biters system.

Det ser ikke ut til å være noe idiotsikkert i /proc eller /sys; produksjonen fra /proc/cpuinfo kan gi noen viktige ledetråder. Hvis du av en eller annen grunn trenger en automatisk sjekk, virker det som en potensiell lydmetode å lage en tabell som er kartlagt til «modellnavn» -feltet (andre felt, inkludert «modell», «CPU-familie» osv. Ser valgfrie ut – de har ikke » t vises i det hele tatt for meg på en Broadcom 2708 ARMv6-prosessor).

Kommentarer

  • Så armv7l er 32 bit riktig?
  • @bakalolo Les spørsmålet og det aksepterte svaret sakte;)

Svar

Installer «lshw» -pakken .

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

Svar

Virker som de fleste måter å se bitantal er på en eller annen måte vet at arm7 = 32 bit og selv om det kan være sant, men hva med

pi@rpi9:~ $ getconf LONG_BIT 32 

Og hvis du vil se etter CPU-modellen, bruker jeg vanligvis 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 

Kommentarer

  • getconf LONG_BIT er veldig grei

Svar

Prøv følgende.

 // -*- 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; }  

Adressestørrelsen er void*.

Kommentarer

Svar

Nei det er en 64-bits datamaskin. Det er en Allwinner H8 , heks er en dobbel ARM-7. 8 kjerner, 64 bits, powervr, sgx 544, med dobbel hastighet (700mhz).

Så nei, den kan være 64 bit. Bare operativsystemet kan være 32.

Kommentarer

  • hvor fant du ut at OP ‘ bruker Allwinner H8? Arkitekturen er armv7l som tydeligvis ikke er en 64-bit en
  • Det ‘ er bedre å demonstrere en måte å finne ønsket informasjon fra i systemet i stedet for å bruke tredje -informasjon om partier fra eksterne kilder. Dette er bedre egnet til å være en kommentar enn et svar (derav alle nedstemmene).

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *