a Linux ARM 32 vagy 64 bites?

egy intel alatt tudom, hogy meg tudom nézni a uname -m eredményét, hogy megtudjam, az operációs rendszerem 32 vagy 64 bites, de ARM alatt ez a következőket adja:

armv7l 

A

file /usr/bin/ls 

hogy 32 bites operációs rendszert használok, de hogyan tudhatnám ezt könnyebben?

Megjegyzések

  • a 7-es kar 32 bites . ARMv8-A architecture, announced in October 2011,[6] adds support for a 64-bit address space and 64-bit arithmetic. – wikipédia
  • @richard Találtam, de akkor mi a neve a 64 bites változatnak?
  • I don ‘ nincs hozzáférése ARM-géphez, de mi a uname -a és gcc -v? Ezek hasznosak lehetnek.
  • 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. hu.wikipedia.org/wiki/ARM_architecture#64.2 F32-bit_architecture
  • A 32 bites processzor közül az Arm volt az utolsó, amely 64 bitesre lépett (a meghaltakat leszámítva). A legtöbben 64 bitesre mentek, majd a rossz marketing miatt haltak meg – feltételezve, hogy b etter elég. Az Intel x86 volt a második az utolsó, bár az AMD adta hozzá a 64 bitet.

Válasz

Ott több fokozat, mivel 32 bites vagy vegyes operációs rendszert futtathat 64 bites CPU-n. Lásd: 64 bites kernel, de az összes 32 bites ELF futtatható folyamat, hogy van ez? részletes vita (x86-ra írva, de a legtöbb érvényes) élesíteni is).

A processzor modelljét a /proc/cpuinfo részben találja. Például:

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

Az ARMv7 (és az alatti) 32 bites. ARMv8 bevezeti a 64 bites utasításkészletet.

Ha meg szeretné tudni, hogy rendszere támogatja-e a 64 bites bináris fájlokat, ellenőrizze a kern architektúráját :

$ uname -m armv7l 

64 bites processzoron egy armv8 (vagy annál magasabb) kezdetű karakterláncot láthat ), ha maga a uname folyamat 32 bites folyamat, vagy aarch64, ha 64 bites folyamat. (Lásd még: https://stackoverflow.com/questions/45125516/possible-values-for-uname-m )

Megjegyzések

  • Nem ‘ nem vitatom a válaszát, de sajnos az android egy LINUX, tehát tegyük fel, hogy van valamilyen parancs, VALAMIVEL, amely helyileg megmutatja, és nem olvasok egy dokumentáció néhány oldalon
  • @THESorcerer Az Android Linux kernelt használ, de ez nem Linux rendszer. Nincsenek Linux felhasználói földi eszközei (csak egy nagyon kis részhalmaz). Androidon úgy gondolom, hogy a 64 bites támogatás következetes az alap operációs rendszerben, így a cat /proc/$$/maps segítségével megtudhatja, hogy a rendszer 64 bites vagy 32 bites egy adb parancssorból.
  • Úgy gondolom, hogy a Raspberry Pi 3, amely ARMv8 (CRC, nincs opcionális Crypto), az ARMv8 ellenére is jelenteni fog armv7l. Tehát ‘ biztos vagyok abban, hogy rossz CPU-t fogunk jelenteni.
  • @jww Ha armv7l jelentést tesz, akkor azt jelenti, hogy ‘ 32 bites kernelt futtat. Futtathat egy 32 bites kernelt egy 64 bites CPU-n. Ha információt szeretne a CPU-ról, olvassa el a /proc/cpuinfo cikket.
  • az uname -m csak a következőt adja vissza: ” aarch64 “. A / proc / cpuinfo nem tartalmaz ‘ t sem mindig egy processzor nevét.

Válasz

Amint Richard rámutat, a armv7 változatok mind 32 bitesek, tehát nincs redundáns címke armv7-32 stb.

Egy linuxos rendszeren könnyen, bár nem igazán véglegesen, ellenőrizheti egy közös futtatható fájl megvizsgálásával:

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

Azt mondom, hogy “nem véglegesen”, mert 32 bites futtatható fájlok futtatása 64 bites rendszeren lehetséges.

Úgy tűnik, hogy a /proc vagy /sys; a /proc/cpuinfo kimenete jelentős nyomokat adhat. Ha valamilyen okból automatizált ellenőrzésre van szüksége, akkor a “modell neve” mezőhöz hozzárendelt tábla létrehozása potenciálisan hangzatos módszernek tűnik (más mezők, beleértve a “modell”, “cpu család” stb., Opcionálisnak tűnnek – nem ” számomra egyáltalán nem jelenik meg egy Broadcom 2708 ARMv6 processzoron).

Megjegyzések

  • Tehát az armv7l 32 bites igaz?
  • @bakalolo Lassan olvassa el a kérdést és az elfogadott választ;)

Válasz

Telepítse az “lshw” csomagot .

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

Válasz

Úgy tűnik, hogy a bitszám megtekintésének legtöbb módja valahogy tudom, hogy az arm7 = 32 bit, és bár ez igaz is lehet, de mi van a következővel:

pi@rpi9:~ $ getconf LONG_BIT 32 

És ha a cpu modellt akarod keresni, akkor általában az 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 

Megjegyzések

  • getconf A LONG_BIT nagyon egyszerű

Válasz

Próbálja ki a következőket.

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

A cím mérete void*.

Megjegyzések

Válasz

Nem 64-bites számítógép. Ez egy Allwinner H8 , a boszorkány kettős ARM-7. 8 mag, 64 bit, powervr, sgx 544, dupla sebességgel (700 MHz).

Tehát nem, 64 bites lehet. Csak az operációs rendszer 32 lehet.

Megjegyzések

  • hol találta meg, hogy az OP ‘ az Allwinner H8-at használja? Az architektúra armv7l, ami nyilvánvalóan nem 64 bites egy
  • ‘ jobb, ha bemutatjuk a kívánt információ megtalálásának módját a rendszeren belüli ből, a harmadik használata helyett -partneri információk külső forrásokból. Ez jobban megfelel kommentárnak, mint válasznak (tehát az összes leszavazás).

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük