Spróbować uname -m
. Którego brakuje uname --machine
i daje:
x86_64 ==> 64-bit kernel
i686 ==> 32-bit kernel
W przeciwnym razie nie dla jądra Linuksa, ale dla procesora wpisujesz:
cat /proc/cpuinfo
lub:
grep flags /proc/cpuinfo
Pod parametrem „flags” zobaczysz różne wartości: patrz „ Co oznaczają flagi w / proc / cpuinfo? ” Jedna z nich nazywa się lm
: Long Mode
( x86-64 : amd64, znana również jako Intel 64, tj. 64-bit zdolny)
lm ==> 64-bit processor
Lub używająclshw
(jak wspomniano poniżej przez Rolfa z Saksonii ), bez sudo
(tylko do zmiany szerokości procesora):
lshw -class cpu|grep "^ width"|uniq|awk '{print $2}'
Uwaga: możesz mieć 64-bitowy procesor z zainstalowanym 32-bitowym jądrem .
(jak wspomina ysdx w swojej własnej odpowiedzi : „W dzisiejszych czasach system może być wielodostępny, więc i tak nie ma sensu. Możesz znaleźć domyślny cel kompilatora”)
uname -i
,uname -p
auname -m
show?Jeśli korzystasz z 64-bitowej platformy, zobaczysz x86_64 lub coś bardzo podobnego w danych wyjściowych uname -a
Aby uruchomić nazwę sprzętu dla określonej maszyny
Możesz także zadzwonić
która zwraca 32 lub 64
źródło
uname -m
wyjściax86_64
getconf LONG_BIT
wyjścia32
Który z nich jest poprawny? : \uname -m
jest to przydatne dla QP,configure
ponieważ może dać zły wynik.getconf LONG_BIT
Uzyskać domyślny rozmiar bitowej biblioteki C, które może nie być odpowiedni rozmiar dla określonego, przezCC
kompilator.getconf LONG_BIT
może zapewniać 32 ig został zbudowany jako aplikacja 32-bitowa (zazwyczaj 64-bitowe jądro z 32-bitową przestrzenią użytkownika).lscpu
wyświetli następujące informacje dotyczące twojego procesora:źródło
Kolejnym przydatnym poleceniem ułatwiającym określenie jest jak poniżej:
Komenda:
Odpowiedź:
źródło
Komenda
jest równa
ale jego pisanie jest dwa razy szybsze
źródło
Zastanawiałem się nad tym specjalnie do budowania oprogramowania w Debianie (zainstalowany system Debian może być wersją 32-bitową z 32-bitowym jądrem, bibliotekami itp. Lub może to być wersja 64-bitowa z materiałami skompilowanymi dla 64- bit zamiast 32-bitowego trybu zgodności).
Same pakiety Debiana muszą wiedzieć, do czego służą (oczywiście), kiedy faktycznie tworzą pakiet ze wszystkimi jego metadanymi, w tym architekturą platformy, dlatego istnieje narzędzie do pakowania, które wysyła je do innych narzędzi do pakowania i skryptów, które są nazywane architektura dpkg . Obejmuje zarówno to, do czego jest skonfigurowany, jak i bieżący host. (Zwykle są takie same.) Przykład danych wyjściowych na komputerze 64-bitowym:
Możesz wydrukować tylko jedną z tych zmiennych lub wykonać test pod kątem ich wartości za pomocą opcji wiersza poleceń, aby dpkg -architecture.
Nie mam pojęcia, jak architektura dpkg dedukuje architekturę, ale możesz zajrzeć do jej dokumentacji lub kodu źródłowego (architektura dpkg i większość systemu dpkg ogólnie to Perl).
źródło
dpkg --architecture
aby uzyskać architekturę systemu hosta, która nie wymaga instalacjidpkg-dev
pakietu.dpkg: error: unknown option --architecture
dla dpkg 1.17.5ubuntu z 14.04. dpkg-architecture (z zainstalowanym dpkg-dev) działa jednak dobrze.dpkg --print-architecture
działało na Debianie od zawsze. Ten działa, ale jest ograniczony do Debiana i jego pochodnych.źródło
Jeśli masz 64-bitowy system operacyjny, a nie i686, trzeba
x86_64
alboia64
na wyjściuuname -a
. W tym, że nie masz żadnego z tych dwóch łańcuchów; masz 32-bitowy system operacyjny (pamiętaj, że nie oznacza to, że twój procesor nie jest 64-bitowy).źródło
uname
wyjściowe zawierają inne wartości wskazujące na 64-bitowy system operacyjny. Nie cały świat to x86 lub Itanium ...Ten system jest 32-bitowy. iX86
uname
oznacza, że jest to architektura 32-bitowa. Gdyby był 64-bitowy, zwróciłobyźródło
W dzisiejszych czasach system może być wielodostępny, więc i tak nie ma sensu. Możesz znaleźć domyślny cel kompilatora:
Możesz spróbować skompilować hello world:
źródło
cc -v | grep …
jest specyficzny dla kompilatora, można po prostu użyćcc -dumpmachine
, który nie wymaga grepowania i jest obsługiwany nie tylko przez GCC.W odniesieniu do odpowiedzi „getconf LONG_BIT” .
Napisałem prostą funkcję, aby to zrobić w „C”:
Dobry pomysł, „getconf”!
źródło
CHAR_BIT*sizeof(void*)
lub__WORDSIZE
w C.fgets
: stackoverflow.com/questions/16323185/…Możesz również sprawdzić za pomocą zmiennej środowiskowej:
Wynik:
i386
-> 32 bityx86_64
-> 64 bityWyodrębniono z: http://www.sysadmit.com/2016/02/linux-como-saber-si-es-32-o-64-bits.html
źródło
/bin/bash
ponieważ nie jest zmienną środowiskową. Jeśli jesteś już zależny od Bash, działa to dobrze. Jednakże, wynik może byći386
,i486
,i586
,i686
i inni więc należy być ostrożnym.W Bash, używając przepełnienia liczb całkowitych:
Jest to o wiele bardziej wydajne niż wywoływanie innego procesu lub otwieranie plików.
źródło
getconf używa najmniej wywołań systemowych:
źródło
Jeśli przesuniesz 1 w lewo o 32 i otrzymasz 1, twój system jest 32-bitowy. Jeśli przesuniesz 1 w lewo o 64 i otrzymasz 1, twój system jest 64-bitowy.
Innymi słowy,
if echo $((1<<32)) gives 1 then your system is 32 bit
.if echo $((1<<64)) gives 1 then your system is 64 bit
.źródło
Jeśli jeden jest poważnie ograniczony w dostępnych plikach binarnych (np. W initramfs), moi koledzy zasugerowali:
W moich systemach ALT Linux, i586 ma,
/lib/ld-linux.so.2
a x86_64 ma/lib64/ld-linux-x86-64.so.2
.źródło
źródło
Nie mogę uwierzyć, że przez cały ten czas nikt nie wspominał:
aby uzyskać szczegółowe informacje na temat szybkości, ilości, wielkości i możliwości sprzętu procesora.
źródło
Prosty skrypt, aby uzyskać 64-bitowy lub 32-bitowy
źródło
[ -z `uname -m | grep 64` ] && echo "32-bit" || echo "64-bit"
Oparte na fakcie, że 64-bit jest zwykle
x86_64
i 32-bitowy jesti686
itp.źródło
Najpierw musisz pobrać Virtual Box. Następnie wybierz nowy i 32-bitowy system Linux. Następnie uruchom Linuksa, używając go. Jeśli uruchamia się, to jest 32-bitowy, jeśli nie, to jest 64-bitowy.
źródło