pod informacją wiem, że mogę spojrzeć na wynik, uname -m
aby dowiedzieć się, czy mój system operacyjny jest 32 czy 64-bitowy, ale w przypadku ARM daje to:
armv7l
Wydedukowałem z
file /usr/bin/ls
że korzystam z 32-bitowego systemu operacyjnego, ale skąd mogę to wiedzieć w łatwiejszy sposób?
ARMv8-A architecture, announced in October 2011,[6] adds support for a 64-bit address space and 64-bit arithmetic.
- wikipediauname -a
igcc -v
? Te mogą być pomocne.Announced October 2011, ARMv8-A (often called ARMv8 although not all variants are 64-bit such as ARMv8-R) represents a fundamental change to the ARM architecture. It adds a 64-bit architecture, named "AArch64", and a new "A64" instruction set. AArch64 provides user-space compatibility with ARMv7-A ISA, the 32-bit architecture, therein referred to as "AArch32" and the old 32-bit instruction set, now named "A32" ARM announced their Cortex-A53 and Cortex-A57 cores on 30 October 2012.
- en.wikipedia.org/wiki/ARM_architecture#64.2F32-bit_architectureOdpowiedzi:
Istnieje kilka stopni, ponieważ można uruchomić 32-bitowy lub mieszany system operacyjny na procesorze obsługującym 64-bit. Zobacz 64-bitowe jądro, ale jak działają wszystkie 32-bitowe pliki wykonywalne ELF? do szczegółowej dyskusji (napisanej dla x86, ale większość dotyczy również uzbrojenia).
Możesz znaleźć model procesora w
/proc/cpuinfo
. Na przykład:ARMv7 (i poniżej) jest 32-bitowy. ARMv8 wprowadza 64-bitowy zestaw instrukcji.
Jeśli chcesz sprawdzić, czy Twój system obsługuje 64-bitowe pliki binarne, sprawdź architekturę jądra:
W 64-bitowym procesorze zobaczysz ciąg rozpoczynający się od
armv8
(lub powyżej), jeśliuname
sam proces jest procesem 32-bitowym lubaarch64
jeśli jest to proces 64-bitowy. (Zobacz także https://stackoverflow.com/questions/45125516/possible-values-for-uname-m )źródło
cat /proc/$$/maps
poinformuję cię, czy system jest 64-bitowy czy 32-bitowy z wiersza poleceń adb.armv7l
mimo że ARMv8. Jestem więc prawie pewien, że zgłoszony zostanie niewłaściwy procesor.armv7l
, oznacza to, że używasz jądra 32-bitowego. Możesz uruchomić 32-bitowe jądro na 64-bitowym procesorze. Jeśli chcesz uzyskać informacje o procesorze, przeczytaj/proc/cpuinfo
.Jak zauważa Richard,
armv7
wszystkie warianty są 32-bitowe, więc nie ma zbędnej etykietyarmv7-32
itp.W systemie Linux możesz łatwo, choć nie do końca, sprawdzić, sprawdzając wspólny plik wykonywalny:
Mówię „nie definitywnie”, ponieważ możliwe jest uruchamianie 32-bitowych plików wykonywalnych w systemie 64-bitowym.
Wydaje się, że nie ma nic niezawodnego w
/proc
lub/sys
; wyjście z/proc/cpuinfo
może dostarczyć pewnych znaczących wskazówek. Jeśli z jakiegoś powodu potrzebujesz automatycznego sprawdzania, utworzenie tabeli odwzorowanej na pole „nazwa modelu” wydaje się być jedną potencjalnie solidną metodą (inne pola, w tym „model”, „rodzina procesorów” itp. Wyglądają opcjonalnie - nie dają w ogóle pojawiają się dla mnie na procesorze Broadcom 2708 ARMv6).źródło
Zainstaluj pakiet „lshw”.
źródło
Wydaje się, że większość sposobów sprawdzania liczby bitów polega na tym, aby wiedzieć, że arm7 = 32 bity i chociaż może to być prawda, ale co z
A jeśli chcesz poszukać modelu procesora, zwykle używam arch
źródło
Spróbuj wykonać następujące czynności.
Rozmiar adresu to
void*
.źródło
sizeof
zwroty,size_t
które należy wydrukować za pomocą%zu
. Użycie niewłaściwego specyfikatora formatu wywołuje niezdefiniowane zachowanieNie, to komputer 64-bitowy. To Allwinner H8, wiedźma jest podwójnym ARM-7. 8 rdzeni, 64 bity, powervr, sgx 544, przy podwójnej prędkości (700 MHz).
Więc nie, może być 64-bitowy. Tylko system operacyjny może mieć 32.
źródło