Odpowiedzi:
„uname -m” to polecenie, którego szukasz. Możesz uruchomić zarówno 32-bitowy, jak i 64-bitowy na współczesnych procesorach Intel i AMD, więc „uname -p” ci nie pomoże (dodatkowo w większości nie działa obecnie, to tutaj core2 myśli odpowiedź na „uname -p” jest nieznany").
Szukanie istnienia / usr / lib64 (jak zasugerowano) też ci nie pomoże, ponieważ niektóre pakiety związane ze sprzętem i systemem zainstalują biblioteki 32-bitowe i 64-bitowe, aby być bezpiecznym. W moim systemie (debian) pakiet fakeroot właśnie to robi.
Jeśli chodzi o wyjście „uname -m”, jeśli jest to i386 lub i686, to jest 32-bitowe, jeśli jest to x86_64 (lub alfa, ia64 lub inna architektura 64-bitowa, której nigdy nie widziałem :) to 64-bitowe.
(na marginesie, mój 64-bitowy serwer FreeBSD zwraca „amd64”, co może być nieco dziwne jak na quadcore firmy Intel, ale całkowicie zrozumiałe, jeśli znasz historię architektury 64-bitowej x86)
uname -a i poszukaj x86_64. Jeśli chcesz wiedzieć, czy Twój procesor obsługuje 64 bity, cat / proc / cpuinfo i poszukaj lm w obrębie flag.
Po prostu mylę rzeczy, możesz uruchomić 64-bitowe jądro z 32-bitowym obszarem użytkownika, co właśnie robię. W takim przypadku uname -m
zwraca, x86_64
ale nie mam zainstalowanych bibliotek 64-bitowych, więc większość programów 64-bitowych nie będzie działać.
Więc po sprawdzeniu uname, trzeba szukać /lib64/ld-linux-x86-64.so.2
, /lib64/libc-2.7.so
i /lib/ld-linux.so.2
, /lib/libc-2.7.so
aby zobaczyć, czy 64bit i 32bit biblioteki są dostępne. Aby się upewnić, uruchom te pliki i sprawdź, czy działają poprawnie.
Inną przydatną informacją jest wyjście, lsb_release -a
które jest cross-distro i informuje, jakie moduły LSB specyficzne dla architektury są dostępne.
lsb_release -a
nie generuje architektury przestrzeni użytkownika
$> getconf LONG_BIT
Odpowiedź: 32 lub 64.
Innym sposobem na to jest zapytanie perla, który kompilator powiedział, że rozmiar długiej liczby całkowitej jest następujący:
$ perl -MConfig -e 'print $Config{longsize}*8 . "\n";'
64
vs.
$ perl -MConfig -e 'print $Config{longsize}*8 . "\n";'
32
Lub, jeśli masz zainstalowany gcc, to samo w 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
vs.
[...]
> EOC
$ gcc -Wall -o bits bits.c
$ ./bits
32
:-)
Jako duplikat:
Linux + jak sprawdzić wersję 32-bitową lub 64-bitową systemu Linux
uname -m da ci tylko działającą architekturę / arch jądra. NIE powie ci, czy korzystasz z 32-bitowej dystrybucji GNU / Linux na procesorze obsługującym 64 bity.
Aby poznać swoje możliwości procesora:
cat /proc/cpuinfo
Flaga „LM” powinna być obecna w systemach 64-bitowych, ponieważ reprezentuje „LONG MODE” (rozszerzenia 64-bitowe, AMD64 AMD lub EM64T Intela).
Jeśli masz / usr / lib64, używasz x86_64 ..
Komenda Brada Gilberta miała błąd perla. Naprawiłem to i działa poniższe polecenie: cat / proc / cpuinfo | grep ^ flags | perl -e '$ = <>; print ($ ? "x86_64 \ n": "nie x86_64 \ n")'