Unter einem Intel weiß ich, dass ich das Ergebnis von prüfen kann, um uname -m
zu wissen, ob mein Betriebssystem 32 oder 64 Bit ist, aber unter ARM ergibt sich Folgendes:
armv7l
Ich folgerte aus
file /usr/bin/ls
dass ich auf einem 32-Bit-Betriebssystem bin, aber wie kann ich das auf einfachere Weise wissen?
ARMv8-A architecture, announced in October 2011,[6] adds support for a 64-bit address space and 64-bit arithmetic.
- Wikipediauname -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.2F32-bit_architectureAntworten:
Es gibt verschiedene Abstufungen, da Sie ein 32-Bit- oder ein gemischtes Betriebssystem auf einer 64-Bit-fähigen CPU ausführen können. Siehe 64-Bit-Kernel, aber alle ausführbaren 32-Bit-ELF-Prozesse, wie ist das? für eine detaillierte Diskussion (geschrieben für x86, aber das meiste gilt auch für Arm).
Das Prozessormodell finden Sie in
/proc/cpuinfo
. Zum Beispiel:ARMv7 (und darunter) 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:
Auf einem 64-Bit-Prozessor wird eine Zeichenfolge angezeigt, die mit
armv8
(oder höher) beginnt, wenn deruname
Prozess selbst ein 32-Bit-Prozess oderaarch64
ein 64-Bit-Prozess ist. (Siehe auch https://stackoverflow.com/questions/45125516/possible-values-for-uname-m )quelle
cat /proc/$$/maps
Lassen Sie Sie also wissen, ob das System über eine ADB-Befehlszeile 64-Bit oder 32-Bit ist.armv7l
trotz seines ARMv8 berichten wird. Ich bin mir also ziemlich sicher, dass die falsche CPU gemeldet wird.armv7l
, bedeutet dies, 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
.Wie Richard betont,
armv7
sind alle Varianten 32-Bit, es gibt also keine redundanten Bezeichnungenarmv7-32
usw.Auf einem Linux-System können Sie leicht, wenn auch nicht wirklich endgültig, Folgendes überprüfen, indem Sie eine gemeinsame ausführbare Datei untersuchen:
Ich sage "nicht definitiv", weil es möglich ist, ausführbare 32-Bit-Dateien auf einem 64-Bit-System auszuführen.
Es scheint nichts narrensicheres in
/proc
oder zu sein/sys
; Die Ausgabe von/proc/cpuinfo
kann einige wichtige Hinweise liefern. Wenn Sie aus irgendeinem Grund eine automatische Überprüfung benötigen, erscheint das Erstellen einer Tabelle, die dem Feld "Modellname" zugeordnet ist, als eine potenziell verlässliche Methode (andere Felder, einschließlich "Modell", "CPU-Familie" usw., sehen optional aus - sie funktionieren nicht). Auf einem Broadcom 2708 ARMv6-Prozessor erscheint mir das überhaupt nicht).quelle
Installieren Sie das Paket 'lshw'.
quelle
Scheint, als ob die meisten Möglichkeiten, um die Anzahl der Bits zu sehen, darin bestehen, dass arm7 = 32 Bit ist und dass dies zwar stimmt, aber was ist damit?
Und wenn Sie nach dem CPU-Modell suchen möchten, verwende ich normalerweise Bogen
quelle
Versuche Folgendes.
Die Adressgröße ist
void*
.quelle
sizeof
Retouren,size_t
die ausgedruckt werden müssen mit%zu
. Die Verwendung des falschenNein, es ist ein 64-Bit-Computer. Es ist ein Allwinner H8, der ein Doppel-ARM-7 ist. 8 Kerne, 64 Bits, powervr, sgx 544, mit doppelter Geschwindigkeit (700 MHz).
Also nein, es kann 64 Bit sein. Nur das Betriebssystem könnte 32 sein.
quelle