Frage Woher weiß ich, ob ich 32 oder 64-Bit Linux verwende?


Was wäre ein Befehl, in verschiedenen Distributionen zu laufen?


23
2018-06-17 20:12


Ursprung


stackoverflow.com/questions/246007/... - Ciro Santilli 新疆改造中心 六四事件 法轮功


Antworten:


"uname -m" ist der Befehl, nach dem Sie suchen. Sie können sowohl 32bit als auch 64bit auf modernen Intel- und AMD-Prozessoren laufen lassen, so dass "uname -p" Ihnen nicht weiterhilft (außerdem funktioniert es heutzutage meistens nicht, hier denkt core2 die Antwort auf "uname -p" ist unbekannt").

Die Suche nach der Existenz von / usr / lib64 (wie vorgeschlagen) wird Ihnen auch 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.

Wie für die Ausgabe von "uname -m", wenn es i386 oder i686 ist, ist es 32bit, wenn es x86_64 ist (oder alpha, oder ia64 oder eine andere 64bit Architektur, die ich noch nie gesehen habe), es ist 64bit.

(Als Spaß beiseite, mein 64bit FreeBSD-Server gibt "amd64" zurück, was für ein Intel-Quadcore ein bisschen komisch sein kann, aber völlig verständlich, wenn Sie die Geschichte der x86-64bit-Architektur kennen)


37
2018-06-17 21:31



sagt Ihnen das die Installationsarchitektur oder die tatsächliche CPU-Architektur. Zum Beispiel, wenn Sie 32-Bit-Betriebssystem auf 64-Bit-CPU installiert haben, würde dies i686 oder x86_64 zurückgeben? - monkut


uname -a und suche nach x86_64. Wenn Sie wissen wollen, ob Ihre CPU 64bit verarbeiten kann, cat / proc / cpuinfo und suchen Sie innerhalb der Flags nach lm.


15
2018-06-17 20:15



Katze / proc / cpuinfo | grep ^ Flaggen | perl -e '$ _ = <>; drucke "x86_64 \ n": "nicht x86_64 \ n"' - Brad Gilbert


für RedHat / CentOS:

$ uname -a
Linux cs-centos 2.6.18-92.1.22.el5 #1 SMP Tue Dec 16 12:03:43 EST 2008 i686 athlon i386 GNU/Linux

32-Bit

  • i686 und / oder i386

64-Bit

  • hätte x86_64 im uname -a Ausgabe

6
2018-06-17 20:14





Nur um die Dinge zu verwechseln, können Sie einen 64-Bit-Kernel mit einem 32-Bit-Userland betreiben, was ich gerade mache. In diesem Fall, uname -m kehrt zurück x86_64 aber ich habe keine 64bit-Bibliotheken installiert, so dass die meisten 64bit-Programme nicht laufen werden.

Wenn du also uname markiert hast, musst du danach 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 verfügbar sind. Und um wirklich sicherzustellen, führen Sie diese Dateien aus und sehen Sie, ob sie korrekt ausgeführt werden.

Eine weitere nützliche Information ist die Ausgabe von lsb_release -a Das ist Cross-Distro und wird darüber berichten, welche architekturspezifischen LSB-Module verfügbar sind.


6
2018-06-18 04:06



Unglücklicherweise lsb_release -a gibt die Userland-Architektur nicht aus - Joni


$> getconf LONG_BIT Antwort: 32 oder 64.


6
2017-11-17 07:24





Eine andere Möglichkeit ist, per 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 Sie gcc installiert haben, das gleiche 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

:-)


2
2018-06-18 07:38



Das sagt nur, was die Standardversion von Perl tut. - pjc50
@ pjc50: Und dein Punkt ist? - asjo
Sein Punkt ist, dass Sie ein 32-Bit-Perl auf einem 64-Bit-System haben könnten - niXar
@niXar: Ich denke, das ist möglich, aber das würde für die ... seltsame Linux-Distribution sorgen. Wie auch immer, benutze die C Version dann ;-) - asjo


Als ein Duplikat von:

Linux + wie man Linux Version 32 Bit oder 64 Bit verifiziert

uname -m gibt dir nur die laufende 'arch' / Architektur des Kernels. Es wird Ihnen nicht sagen, ob Sie eine 32-Bit-GNU / Linux-Distribution auf einer 64-Bit-fähigen CPU ausführen.

Um Ihre CPU-Fähigkeit zu kennen:

 cat /proc/cpuinfo

Das 'LM'-Flag sollte in 64-Bit-Systemen vorhanden sein, da es "LONG MODE" (64-Bit-Erweiterungen, AMDs AMD64 oder Intels EM64T) darstellt.


1
2018-01-03 15:21