Antworten:
"uname -m" ist der Befehl, den Sie suchen. Sie können sowohl 32-Bit als auch 64-Bit auf modernen Intel- und AMD-Prozessoren ausführen, so dass "uname -p" Ihnen nicht weiterhilft (außerdem funktioniert es heutzutage meistens nicht, dies hier meint core2 die Antwort auf "uname -p". ist unbekannt").
Die Existenz von / usr / lib64 (wie vorgeschlagen) zu suchen, wird Ihnen ebenfalls nicht helfen, da einige Hardware- und System-bezogene Pakete sowohl 32-Bit- als auch 64-Bit-Bibliotheken installieren, um auf der sicheren Seite zu sein. Auf meinem (Debian-) System macht das fakeroot-Paket genau das.
Was die Ausgabe von "uname -m" betrifft, wenn es sich um i386 oder i686 handelt, dann sind es 32 Bit, wenn es sich um x86_64 (oder Alpha oder ia64 oder eine andere 64-Bit-Architektur handelt, die ich noch nie gesehen habe :), dann sind es 64 Bit.
(Spaß beiseite, mein 64-Bit-FreeBSD-Server gibt "amd64" zurück, was für einen Intel-Quadcore etwas seltsam sein könnte, aber völlig verständlich ist, wenn Sie die Geschichte der 64-Bit-x86-Architektur kennen.)
uname -a und suche nach x86_64. Wenn Sie wissen möchten, ob Ihre CPU 64-Bit unterstützt, müssen Sie cat / proc / cpuinfo und in den Flags nach lm suchen.
Nur um die Dinge zu verwirren, können Sie einen 64-Bit-Kernel mit einem 32-Bit-Benutzerland ausführen, was ich auch tue. In diesem Fall uname -m
kehrt x86_64
aber ich habe nicht alle 64 - Bit - Bibliotheken so dass die meisten 64 - Bit - Programme installieren nicht ausgeführt werden .
Also , wenn Sie uname überprüfen, müssen Sie suchen /lib64/ld-linux-x86-64.so.2
, /lib64/libc-2.7.so
und /lib/ld-linux.so.2
, /lib/libc-2.7.so
um zu sehen , ob 64 - Bit und 32 - Bit - Bibliotheken zur Verfügung stehen. Führen Sie diese Dateien aus, um sicherzustellen, dass sie ordnungsgemäß ausgeführt werden.
Eine weitere nützliche Information ist die Ausgabe von lsb_release -a
cross-distro, in der angegeben wird, welche architekturspezifischen LSB-Module verfügbar sind.
lsb_release -a
Die Userland-Architektur wird leider nicht ausgegeben
$> getconf LONG_BIT
Antwort: 32 oder 64.
Eine andere Möglichkeit besteht darin, Perl zu fragen, welcher Compiler die Größe einer langen Ganzzahl angibt:
$ perl -MConfig -e 'print $Config{longsize}*8 . "\n";'
64
gegen
$ perl -MConfig -e 'print $Config{longsize}*8 . "\n";'
32
Oder, wenn du gcc installiert hast, dasselbe in C:
$ cat > bits.c <<EOC
> #include <stdlib.h>
> #include <stdio.h>
>
> int main(void) {
> printf("%d\n", (int)sizeof(long)*8);
>
> exit(0);
> }
> EOC
$ gcc -Wall -o bits bits.c
$ ./bits
64
gegen
[...]
> EOC
$ gcc -Wall -o bits bits.c
$ ./bits
32
:-)
Als Duplikat von:
Linux + wie man Linux Version 32 Bit oder 64 Bit verifiziert
uname -m gibt dir nur den laufenden 'Bogen' / die Architektur des Kernels. Es wird NICHT angezeigt, ob Sie eine 32-Bit-GNU / Linux-Distribution auf einer 64-Bit-fähigen CPU ausführen.
So kennen Sie Ihre CPU-Kapazität:
cat /proc/cpuinfo
Das 'LM'-Flag sollte in 64-Bit-Systemen vorhanden sein, da es den' LONG MODE'-Modus darstellt (64-Bit-Erweiterungen, AMDs AMD64 oder Intels EM64T).
$ uname -p
x86_64
Wenn Sie / usr / lib64 haben, führen Sie x86_64 aus.
Brad Gilberts Befehl hatte einen Perl-Fehler. Ich habe es behoben und der folgende Befehl funktioniert: cat / proc / cpuinfo | grep ^ flags | perl -e '$ = <>; print ($ ? "x86_64 \ n": "nicht x86_64 \ n")'