Ich weiß, dass ich das Ergebnis von uname -m
überprüfen kann, um festzustellen, ob mein Betriebssystem 32 oder 32 Jahre alt ist 64 Bit, aber unter ARM ergibt dies:
armv7l
Ich habe aus
file /usr/bin/ls
abgeleitet dass ich auf einem 32-Bit-Betriebssystem bin, aber wie kann ich das auf einfachere Weise wissen?
Kommentare
- Arm 7 ist 32 Bit
ARMv8-A architecture, announced in October 2011,[6] adds support for a 64-bit address space and 64-bit arithmetic.
– wikipedia - @richard Ich habe es erraten, aber wie heißt dann die 64-Bit-Variante?
- I. ‚ hat keinen Zugriff auf eine ARM-Maschine, aber was ist die Ausgabe von
uname -a
undgcc -v
? Diese könnten hilfreich sein. -
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_Architektur - Arm war die letzte der 32-Bit-CPUs mit 64 Bit (mit Ausnahme derjenigen, die gestorben sind). Die meisten gingen auf 64 Bit und starben dann aufgrund schlechten Marketings – vorausgesetzt, b etter ist genug. Der Intel x86 war der vorletzte, obwohl AMD 64 Bit hinzufügte.
Antwort
Dort Es gibt mehrere Abstufungen, da Sie ein 32-Bit- oder gemischtes Betriebssystem auf einer 64-Bit-fähigen CPU ausführen können. Eine ausführliche Beschreibung (geschrieben für x86, aber das meiste davon gilt) finden Sie unter 64-Bit-Kernel, aber alle ausführbaren 32-Bit-ELF-Ausführungsprozesse auch zu aktivieren).
Das Prozessormodell finden Sie unter /proc/cpuinfo
. Beispiel:
$ cat /proc/cpuinfo Processor : ARMv7 Processor rev 10 (v7l)
ARMv7 (und niedriger) ist 32-Bit. ARMv8 führt den 64-Bit-Befehlssatz ein.
Wenn Sie sehen möchten, ob Ihr System 64-Bit-Binärdateien unterstützt, überprüfen Sie die Kernelarchitektur :
$ uname -m armv7l
Auf einem 64-Bit-Prozessor wird eine Zeichenfolge angezeigt, die mit armv8
(oder höher) beginnt ) wenn der uname
-Prozess selbst ein 32-Bit-Prozess ist, oder aarch64
, wenn es sich um einen 64-Bit-Prozess handelt. (Siehe auch https://stackoverflow.com/questions/45125516/possible-values-for-uname-m )
Kommentare
- Ich ‚ bestreite Ihre Antwort nicht, aber leider ist Android ein LINUX. Es gibt also vermutlich irgendwo einen Befehl, der ihn lokal anzeigt und keinen liest Dokumentation auf einigen Seiten
- @THESorcerer Android verwendet einen Linux-Kernel, ist jedoch kein Linux-System. Es gibt keine Land-Tools für Linux-Benutzer (nur eine sehr kleine Teilmenge). Unter Android ist die 64-Bit-Unterstützung im Basisbetriebssystem meiner Meinung nach konsistent. Mit
cat /proc/$$/maps
können Sie über eine ADB-Befehlszeile wissen, ob das System 64-Bit oder 32-Bit ist. - Ich glaube, dass Raspberry Pi 3, ARMv8 (CRC, kein optionales Crypto),
armv7l
meldet, obwohl es ARMv8 ist. Daher bin ich ‚ ziemlich sicher, dass die falsche CPU gemeldet wird. - @jww Wenn
armv7l
gemeldet wird, wird dies gemeldet bedeutet, dass Sie ‚ einen 32-Bit-Kernel ausführen. Sie können einen 32-Bit-Kernel auf einer 64-Bit-CPU ausführen. Wenn Sie Informationen zur CPU wünschen, lesen Sie/proc/cpuinfo
. - uname -m gibt nur “ aarch64 „. / proc / cpuinfo ‚ enthält auch nicht immer einen Namen für einen Prozessor.
Antwort
Wie richard betont, sind armv7
-Varianten alle 32-Bit, sodass es keine redundante Bezeichnung armv7-32
gibt usw.
Auf einem Linux-System können Sie dies leicht, wenn auch nicht wirklich definitiv, überprüfen, indem Sie eine gemeinsame ausführbare Datei untersuchen:
> which bash /bin/bash > file /bin/bash /bin/bash: ELF 32-bit LSB executable, ARM, version 1 (SYSV) ...
Ich sage „nicht definitiv“, weil es möglich ist, ausführbare 32-Bit-Dateien auf einem 64-Bit-System auszuführen.
In /proc
oder /sys
; Die Ausgabe von /proc/cpuinfo
kann einige wichtige Hinweise liefern. Wenn Sie aus irgendeinem Grund eine automatische Überprüfung benötigen, scheint das Erstellen einer Tabelle, die dem Feld „Modellname“ zugeordnet ist, eine potenziell sinnvolle Methode zu sein (andere Felder, einschließlich „Modell“, „CPU-Familie“ usw., sehen optional aus – sie werden nicht verwendet). erscheint auf einem Broadcom 2708 ARMv6-Prozessor überhaupt nicht.
Kommentare
- Armv7l ist also 32-Bit richtig?
- @bakalolo Lies die Frage und die akzeptierte Antwort langsam;)
Antwort
Installiere das „lshw“ -Paket .
# lshw ... description: Computer product: Raspberry Pi 3 Model B Rev 1.2 width: 32 bits ...
Antwort
Die meisten Möglichkeiten, die Anzahl der Bits zu sehen, scheinen irgendwie zu sein Ich weiß, dass arm7 = 32 Bit ist und das mag wahr sein, aber was ist mit
pi@rpi9:~ $ getconf LONG_BIT 32
Und wenn Sie nach dem CPU-Modell suchen möchten, verwende ich normalerweise 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
Kommentare
- getconf LONG_BIT ist sehr einfach
Antwort
Versuchen Sie Folgendes.
// -*- 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; }
Die Adressgröße ist void*
.
Kommentare
-
sizeof
gibtsize_t
zurück, das mit%zu
. Die Verwendung des falschen Formatbezeichners ruft undefiniertes Verhalten - auf, und die Größe von void * ist ‚ nicht unbedingt die Architekturbitbreite. Haben Sie jemals von x32 ABI sites.google.com/site/x32abi gehört? li>
- In ähnlicher Weise sagt getconf -a | grep LONG_BIT
- ‚ Ihnen nichts anderes als die Art Ihres Compilers .
Antwort
Nein, es ist ein 64-Bit-Computer. Es ist ein Allwinner H8 , Hexe ist ein Doppel-ARM-7. 8 Kerne, 64 Bit, powervr, sgx 544, mit doppelter Geschwindigkeit (700 MHz).
Also nein, es kann 64 Bit sein. Nur das Betriebssystem könnte 32 sein.
Kommentare
- Wo haben Sie festgestellt, dass das OP ‚ Allwinner H8 verwendet? Die Architektur ist armv7l, was eindeutig keine ist 64-Bit-Version
- ‚ Es ist besser, einen Weg zu demonstrieren, um die gewünschten Informationen aus innerhalb des Systems zu finden, als die dritte zu verwenden Informationen von Parteien aus externen Quellen. Dies ist besser als Kommentar als als Antwort geeignet (daher alle Abstimmungen).