Die Hardware, der Kernel und die Userspace-Programme können unterschiedliche Wortgrößen¹ haben.
-
Sie können sehen, ob die CPU ist 64-Bit, 32-Bit oder kann beides, indem Sie
flags
überprüfen Zeile in/proc/cpuinfo
. Sie müssen die möglichen Flags Ihrer Architekturfamilie kennen. Beispielsweise auf i386/amd64-Plattformen derlm
Flag identifiziert amd64-fähige CPUs (CPUs, die dieses Flag nicht haben, sind nur i386).grep -q '^flags *:.*\blm\b' /proc/cpuinfo # Assuming a PC
-
Sie können sehen, ob der Kernel 32-Bit oder 64-Bit ist, indem Sie die Architektur mit
uname -m
abfragen . Beispiel:i[3456]86
sind 32-Bit, währendx86_64
ist 64-Bit. Beachten Sie, dass auf mehreren Architekturen ein 64-Bit-Kernel 32-Bit-Userland-Programme ausführen kann, also selbst wennuname -m
einen 64-Bit-Kernel zeigt, gibt es keine Garantie, dass 64-Bit-Bibliotheken verfügbar sein werden.[ "$(uname -m)" = "x86_64" ] # Assuming a PC
-
Sie können sehen, was im Userland verfügbar ist, indem Sie den LSB-Support mit dem
lsb_release
abfragen Befehl. Genauer gesagtlsb_release -s
gibt eine:
aus -getrennte Liste der unterstützten LSB-Funktionen. Jedes Merkmal hat die Formmodule-version-architecture
. Beispielsweise wird die Verfügbarkeit einer ix86-C-Bibliothek durchcore-2.0-ia32
angezeigt , währendcore-2.0-amd64
ist das Analogon für amd64. Nicht jede Distribution deklariert jedoch alle verfügbaren LSB-Module, daher können mehr verfügbar sein, als auf diese Weise erkennbar sind. -
Mit einem Befehl wie
file /bin/ls
können Sie sehen, für welche Architekturprogramme auf dem System gebaut wurden . Beachten Sie, dass es möglich ist, ein gemischtes System zu haben; auch wennls
ein 64-Bit-Programm ist, sind auf Ihrem System möglicherweise Bibliotheken installiert, um 32-Bit-Programme auszuführen, und (seltener) umgekehrt. -
Sie können die bevorzugte Wortgröße für die Entwicklung herausfinden (vorausgesetzt, ein C-Compiler ist verfügbar), indem Sie ein 5-zeiliges C-Programm kompilieren, das
sizeof(void*)
ausgibt odersizeof(size_t)
. Sie können dieselben Informationen auf etwas weniger zuverlässige Weise² erhalten, indem Sie den Befehlgetconf LONG_BIT
ausführen .#include <stdio.h> int main() { printf("%d\n", (int)sizeof(void*)); return 0; }
Ob Sie bei virtuellen Maschinen eine 64-Bit-VM auf einem 32-Bit-System ausführen können oder umgekehrt, hängt von der Technologie Ihrer virtuellen Maschine ab. Siehe insbesondere Wie kann ich eine virtuelle 64-Bit-Linux-Maschine auf einem 32-Bit-Linux installieren?
¹ „Wortgröße“ ist der übliche Name für das, was Sie Bitness nennen.
² Es kann unzuverlässig sein, wenn jemand einen alternativen C-Compiler mit einer anderen Zielarchitektur installiert, aber den Systemstandard getconf
beibehalten hat .