sub o informație știu că pot examina rezultatul uname -m
pentru a ști dacă sistemul meu de operare are 32 sau 64 de biți, dar sub ARM acest lucru dă:
armv7l
Am dedus din
file /usr/bin/ls
că sunt „pe un sistem de operare pe 32 de biți, dar cum pot să știu acest lucru într-un mod mai ușor?
Comentarii
- arm 7 este 32 de biți .
ARMv8-A architecture, announced in October 2011,[6] adds support for a 64-bit address space and 64-bit arithmetic.
– wikipedia - @richard Bănuiam, dar cum se numește varianta pe 64 de biți?
- I nu ‘ nu aveți acces la o mașină ARM, dar care este rezultatul
uname -a
șigcc -v
? Acestea ar putea fi utile. -
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 a fost ultimul procesor de 32 de biți care a ajuns pe 64 de biți (cu excepția celor care au murit). Majoritatea au ajuns pe 64 de biți și apoi au murit, din cauza marketingului slab – presupunând că fiind b etter este suficient. Intel x86 a fost al doilea care a durat, deși AMD a adăugat 64 de biți.
Răspuns
Acolo sunt mai multe gradații, deoarece puteți rula un sistem de operare pe 32 de biți sau mixt pe un procesor pe 64 de biți. Consultați kernel pe 64 de biți, dar toate procesele executabile executabile ELF pe 32 de biți, cum este? pentru o discuție detaliată (scrisă pentru x86, dar cea mai mare parte se aplică să se înarmeze și).
Puteți găsi modelul procesorului în /proc/cpuinfo
. De exemplu:
$ cat /proc/cpuinfo Processor : ARMv7 Processor rev 10 (v7l)
ARMv7 (și mai jos) are 32 de biți. ARMv8 introduce setul de instrucțiuni pe 64 de biți.
Dacă doriți să vedeți dacă sistemul dvs. acceptă binare pe 64 de biți, verificați arhitectura nucleului :
$ uname -m armv7l
Pe un procesor pe 64 de biți, ați vedea un șir care începe cu armv8
(sau mai sus) ) dacă procesul uname
în sine este un proces pe 32 de biți sau aarch64
dacă este un proces pe 64 de biți. (Vezi și https://stackoverflow.com/questions/45125516/possible-values-for-uname-m )
Comentarii
Răspuns
După cum subliniază Richard, variantele armv7
sunt toate pe 32 de biți, deci nu există o etichetă redundantă armv7-32
, etc.
Pe un sistem Linux, puteți verifica cu ușurință, deși nu cu adevărat definitiv, examinând un executabil comun:
> which bash /bin/bash > file /bin/bash /bin/bash: ELF 32-bit LSB executable, ARM, version 1 (SYSV) ...
Spun „nu definitiv” deoarece este posibil să rulați executabile pe 32 de biți pe un sistem pe 64 de biți.
Nu pare să existe nimic infailibil în /proc
sau /sys
; ieșirea din /proc/cpuinfo
poate oferă câteva indicii semnificative. Dacă, dintr-un anumit motiv, aveți nevoie de o verificare automată, crearea unui tabel mapat la câmpul „numele modelului” pare a fi o metodă potențial solidă (alte câmpuri, inclusiv „modelul”, „familia cpu”, etc. arată opțional – ele nu ” Nu apar deloc pentru mine pe un procesor Broadcom 2708 ARMv6).
Comentarii
- Deci armv7l are 32 de biți nu?
- @bakalolo Citiți întrebarea și răspunsul acceptat încet;)
Răspuns
Instalați pachetul „lshw” .
# lshw ... description: Computer product: Raspberry Pi 3 Model B Rev 1.2 width: 32 bits ...
Răspuns
Se pare că majoritatea modurilor de a vedea numărul de biți este cumva știți că arm7 = 32 biți și în timp ce acest lucru poate fi adevărat, dar ce zici de
pi@rpi9:~ $ getconf LONG_BIT 32
Și dacă doriți să căutați modelul cpu, în mod normal folosesc 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
Comentarii
- getconf LONG_BIT este foarte simplu
Răspuns
Încercați următoarele.
// -*- 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; }
Dimensiunea adresei este void*
.
Comentarii
-
sizeof
returneazăsize_t
care trebuie tipărit utilizând%zu
. Utilizarea unui specificator de format greșit invocă un comportament nedefinit - iar dimensiunea void * nu este neapărat lățimea bitului arhitecturii. Ați auzit vreodată de x32 ABI sites.google.com/site/x32abi
- În mod similar, getconf -a | grep LONG_BIT
- Acest lucru nu vă ‘ nu vă spune despre nimic altceva decât natura compilatorului dvs. .
Răspuns
Nu este „un computer pe 64 de biți. Este un Allwinner H8 , vrăjitoare este un ARM-7 dublu. 8 nuclee, 64 de biți, powervr, sgx 544, la viteză dublă (700mhz).
Deci nu, este capabil să aibă 64 de biți. Doar sistemul de operare ar putea avea 32.
Comentarii
- unde ați găsit că OP ‘ utilizează Allwinner H8? Arhitectura este armv7l, care în mod clar nu este un Unul pe 64 de biți
- Este ‘ mai bine să demonstreze o modalitate de a găsi informațiile dorite din în cadrul sistemului în loc să folosiți al treilea -informații despre părți din surse externe. Acest lucru este mai potrivit pentru a fi un comentariu decât un răspuns (deci toate voturile negative).
cat /proc/$$/maps
vă va informa dacă sistemul este pe 64 de biți sau pe 32 de biți dintr-o linie de comandă adb.armv7l
chiar dacă ARMv8 este. Deci, ‘ sunt destul de sigur că va fi raportat un procesor greșit.armv7l
, înseamnă că ‘ rulați un kernel pe 32 de biți. Puteți rula un kernel pe 32 de biți pe un procesor pe 64 de biți. Dacă doriți informații despre CPU, citiți/proc/cpuinfo
.