linux ARM 32 veya 64 bit mi?


60

Bir istihbarat altında, uname -mişletim sistemimin 32 mi, yoksa 64 bit mi olduğunu bilmenin sonucuna bakabilirim , ancak ARM altında bu:

armv7l

Düştüm

file /usr/bin/ls

32-bit bir işletim sisteminde olduğumu, ancak bunu daha kolay bir şekilde nasıl bilebilirim?


3
7. kol 32 bit. ARMv8-A architecture, announced in October 2011,[6] adds support for a 64-bit address space and 64-bit arithmetic.- wikipedia
ctrl-alt-delor 10:14

@ richard Öyle tahmin ediyordum, ama sonra 64-bit değişkenin adı nedir?
Chris Maes

1
Bir ARM makinesine erişimim yok ama çıktısı nedir uname -ave gcc -v? Bunlar yardımcı olabilir.
terdon

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_architecture
ctrl-alt-delor

Arm (ölenler hariç) 64bit geçen son işlemci idi. Birçoğu 64bit gitti ve daha sonra, daha iyi olmanın yeterli olduğunu varsayarak, zayıf pazarlama nedeniyle öldü. Intel x86, 64 bit ekleyen AMD olmasına rağmen, en sonuncusu.
ctrl-alt-delor

Yanıtlar:


74

64 bit özellikli bir işlemcide 32 bit veya karışık bir işletim sistemini çalıştırabileceğiniz için çeşitli derecelendirmeler vardır. 64 bit çekirdeğe bakın , ancak tüm 32 bit ELF çalıştırılabilir çalıştırma işlemleri, bu nasıl? detaylı bir tartışma için (x86 için yazılmış, ancak çoğu da kol için de geçerlidir).

İşlemci modelini içinde bulabilirsiniz /proc/cpuinfo. Örneğin:

$ cat /proc/cpuinfo
Processor       : ARMv7 Processor rev 10 (v7l)

ARMv7 (ve altı) 32-bit. ARMv8 , 64-bit komut setini tanıtıyor.

Sisteminizin 64 bit ikili dosyaları destekleyip desteklemediğini görmek istiyorsanız, çekirdek mimarisini kontrol edin:

$ uname -m
armv7l

64 bit işlemcide, işlem 32 bitlik bir işlemse veya 64 bitlik bir işlemse armv8(ya da üstü) ile başlayan bir dize görürsünüz . (Ayrıca bkz. Https://stackoverflow.com/questions/45125516/possible-values-for-uname-m )unameaarch64


2
Ben cevabınızı itiraz yok, ama ne yazık ki android Bir LINUX IS, bu nedenle, yerel olarak değil, bunu gösteren bazı komut, YERE bazı sayfada bir belgeleri okumak için orada varsayalım
THESorcerer

1
@ THESorcerer Android bir Linux çekirdeği kullanıyor, ancak bir Linux sistemi değil. Linux kullanıcı kara aracı yoktur (sadece çok küçük bir alt küme). Android'de, temel işletim sisteminde 64 bit desteğinin tutarlı olduğunu düşünüyorum, bu yüzden cat /proc/$$/mapssistemin bir adb komut satırından 64 bit mi yoksa 32 bit mi olduğunu size bildiririm.
Gilles 'SO- kötülükten

3
ARMv8 (CRC, isteğe bağlı Kripto yok) olan Raspberry Pi 3'ün ARMv8'i armv7lolsa bile rapor edeceğine inanıyorum. Bu yüzden yanlış CPU bildirilecek eminim.

1
@jww Rapor ederse armv7l, 32 bitlik bir çekirdek çalıştırdığınız anlamına gelir. 64 bit CPU'da 32 bit çekirdek çalıştırabilirsiniz. CPU hakkında bilgi istiyorsanız, okuyun /proc/cpuinfo.
Gilles 'SO- kötülük yapmayı bırak'

uname -m sadece "aarch64" değerini döndürür. / proc / cpuinfo her zaman bir işlemci için bir isim içermez.
Halsafar

23

Richard'ın işaret ettiği gibi, armv7değişkenlerin hepsi 32-bit, bu nedenle fazlalık etiket armv7-32vb. Yoktur .

Linux sisteminde, gerçekten kesin olmasa da, ortak bir yürütülebilir dosyayı inceleyerek kolayca kontrol edebilirsiniz:

> which bash
/bin/bash
> file /bin/bash
/bin/bash: ELF 32-bit LSB executable, ARM, version 1 (SYSV) ...

"Kesin değil" diyorum, çünkü 64-bit bir sistemde 32-bit çalıştırılabilir dosyaları çalıştırmak mümkün.

/procVeya içinde kusursuz bir şey yok gibi görünüyor /sys; çıktısı /proc/cpuinfo olabilir bazı önemli ipuçları vermektedir. Herhangi bir nedenden dolayı otomatik bir kontrole ihtiyacınız varsa, "model adı" alanına eşlenmiş bir tablo oluşturmak potansiyel olarak tek bir yöntem gibi görünür ("model", "cpu ailesi" vb. Dahil diğer alanlar isteğe bağlı görünür - bunlar ' Bir Broadcom 2708 ARMv6 işlemcide benim için hiç görünmüyor).


Yani armv7l 32 bit doğru mu?
bakalolo

1
@bakalolo Soruyu ve kabul edilen cevabı yavaşça okuyunuz;)
goldilocks

11

'Lshw' paketini kurun.

# lshw
...
    description: Computer
    product: Raspberry Pi 3 Model B Rev 1.2
    width: 32 bits
...

3

Bit sayısını görmenin çoğu yolu, bir şekilde bu arm7 = 32 bit olduğunu biliyor olmaktır ve bu doğru olabilir, peki ya

pi@rpi9:~ $ getconf LONG_BIT
32

Eğer cpu modelini aramak istiyorsanız normalde arch kullanın.

root@rpi4:~# tr '\0' '\n' </proc/device-tree/model;arch
Raspberry Pi Model B Rev 2
armv6l

pi@rpi9:~ $ tr '\0' '\n' </proc/device-tree/model;arch
Raspberry Pi 3 Model B Rev 1.2
armv7l

getconf LONG_BIT çok basit
Abdulkarim Kanaan

1

Takip etmeyi dene.

// -*- compile-command: "gcc -Wall -o sizeof sizeof.c && ./sizeof" -*-

#include <stdio.h>
#include <limits.h>

#define size(t) { t x; printf("%s:\t%3lu bit\n", #t, CHAR_BIT * sizeof x); }

int main (int argc, char *argv[])
{
  size(char);
  size(short);
  size(int);
  size(long);
  size(void*);
  return 0;
}

Adres boyutudur void*.


1
sizeofsize_tkullanılarak yazdırılması gereken döner%zu . Yanlış format belirticisinin kullanılması tanımsız davranışa neden oluyor
phuclv

ve boşluğun boyutu * mutlaka mimari bit genişliği değildir. Hiç duydun x32 ABI sites.google.com/site/x32abi
phuclv

Benzer şekilde, getconf -a | grep
LONG_BIT

2
Bu size derleyicinizin doğasından başka bir şey söylemez .
rsethc

-5

Hayır, bu 64 bit bir bilgisayar. Bu bir Allwinner H8, cadı bir çift ARM-7. 8 çekirdek, 64 bit, powervr, sgx 544, çift hızda (700mhz).

Yani hayır, 64 bit olma yeteneğine sahip. Sadece işletim sistemi 32 olabilir.


OP'nin Allwinner H8'i kullandığını nereden öğrendiniz? Mimari armv7l, ki kesinlikle 64-bit değildir
phuclv

Harici kaynaklardan üçüncü taraf bilgileri kullanmak yerine , istenen bilgileri sistem içinde bulmanın bir yolunu göstermek daha iyidir . Bu, bir cevaptan daha iyi bir yorum olmak için daha uygundur (dolayısıyla tüm aşağı oylar).
Synetech
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.