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
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
-
sizeof
visszaadjasize_t
, amelyet ki kell nyomtatni a%zu
. A helytelen formátum-specifikátor használata meghatározatlan viselkedésre hív fel - és a void * mérete nem feltétlenül az architektúra bitszélessége. Hallottál valaha a x32 ABI sites.google.com/site/x32abi
- Hasonlóképpen, getconf -a | grep LONG_BIT
- Ez nem ‘ nem mond semmiről, csak a fordítójának jellegéről .
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).
ARMv8-A architecture, announced in October 2011,[6] adds support for a 64-bit address space and 64-bit arithmetic.
– wikipédiauname -a
ésgcc -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