475 Stimmen

Wie kann man feststellen, ob ein bestimmtes Linux 32 Bit oder 64 Bit ist?

Wenn ich tippe uname -a gibt es die folgende Ausgabe.

Linux mars 2.6.9-67.0.15.ELsmp #1 SMP Tue Apr 22 13:50:33 EDT 2008 i686 i686 i386 GNU/Linux

Wie kann ich daraus erkennen, ob es sich um ein 32- oder 64-Bit-Betriebssystem handelt?

Dies ist nützlich beim Schreiben von configure Skripte, zum Beispiel: Für welche Architektur baue ich?

5voto

LinuxMaintwo Punkte 1

Sie können auch eine Umgebungsvariable zur Überprüfung verwenden:

echo $HOSTTYPE

Ergebnis:

i386 -> 32 Bits

x86_64 -> 64 Bits

Entnommen aus: http://www.sysadmit.com/2016/02/linux-como-saber-si-es-32-o-64-bits.html

5voto

kaiwan Punkte 2054

In Bezug auf die Antwort "getconf LONG_BIT" .

Ich habe eine einfache Funktion in C geschrieben, um dies zu tun:

/*
 * check_os_64bit
 *
 * Returns integer:
 *   1 = it is a 64-bit OS
 *   0 = it is NOT a 64-bit OS (probably 32-bit)
 *   < 0 = failure
 *     -1 = popen failed
 *     -2 = fgets failed
 *
 * **WARNING**
 * Be CAREFUL! Just testing for a boolean return may not cut it
 * with this (trivial) implementation! (Think of when it fails,
 * returning -ve; this could be seen as non-zero & therefore true!)
 * Suggestions?
 */
static int check_os_64bit(void)
{
    FILE *fp=NULL;
    char cb64[3];

    fp = popen ("getconf LONG_BIT", "r");
    if (!fp)
       return -1;

    if (!fgets(cb64, 3, fp))
        return -2;

    if (!strncmp (cb64, "64", 3)) {
        return 1;
    }
    else {
        return 0;
    }
}

Gute Idee, das 'getconf'!

4voto

Luchostein Punkte 2064

In Bash mit Integer-Überlauf:

if ((1 == 1<<32)); then
  echo 32bits
else
  echo 64bits
fi

Das ist viel effizienter, als einen anderen Prozess aufzurufen oder Dateien zu öffnen.

3voto

getconf verwendet die wenigsten Systemaufrufe:

$ strace getconf LONG_BIT | wc -l
253

$ strace arch | wc -l
280

$ strace uname -m | wc -l
281

$ strace grep -q lm /proc/cpuinfo | wc -l
301

2voto

Sandeep Giri Punkte 781

Wenn Sie 1 durch 32 nach links schieben und 1 erhalten, ist Ihr System 32 Bit. Wenn Sie 1 nach links durch 64 schieben und 1 erhalten, ist Ihr System 64 Bit.

Mit anderen Worten,

if echo $((1<<32)) gives 1 then your system is 32 bit .

if echo $((1<<64)) gives 1 then your system is 64 bit .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X