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 derlmFlag 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 -mabfragen . Beispiel:i[3456]86sind 32-Bit, währendx86_64ist 64-Bit. Beachten Sie, dass auf mehreren Architekturen ein 64-Bit-Kernel 32-Bit-Userland-Programme ausführen kann, also selbst wennuname -meinen 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_releaseabfragen Befehl. Genauer gesagtlsb_release -sgibt 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-ia32angezeigt , währendcore-2.0-amd64ist 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/lskö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 wennlsein 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_BITausfü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 .