é o meu ARM 32 ou 64 bit linux?

46

sob uma intel eu sei que eu posso olhar para o resultado de uname -m para saber se o meu sistema operacional é 32 ou 64 bits, mas sob o ARM isso dá:

armv7l

Eu deduzi de

file /usr/bin/ls

que estou em um sistema operacional de 32 bits, mas como posso saber isso de uma forma mais fácil?

    
por Chris Maes 10.06.2014 / 14:32

5 respostas

68

Existem várias gradações, pois você pode executar um sistema operacional de 32 bits ou misto em uma CPU compatível com 64 bits. Veja kernel de 64 bits, mas todos os processos executáveis do ELF de 32 bits, como é isso? para uma discussão detalhada (escrita para x86, mas a maioria também se aplica ao braço).

Você pode encontrar o modelo do processador em /proc/cpuinfo . Por exemplo:

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

ARMv7 (e abaixo) é de 32 bits. ARMv8 introduz o conjunto de instruções de 64 bits.

Se você deseja ver se seu sistema suporta binários de 64 bits, verifique a arquitetura do kernel:

$ uname -m
armv7l

Em um processador de 64 bits, você verá armv8 (ou acima).

Neste momento, se você estivesse executando um ARM de 64 bits, você saberia.

    
por 11.06.2014 / 03:04
19

Como richard aponta, armv7 variants são todos de 32 bits, portanto não há rótulo redundante armv7-32 , etc.

Em um sistema Linux, você pode facilmente, embora não verdadeiramente definitivo, verificar examinando um executável comum:

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

Eu digo "não definitivamente" porque é possível executar executáveis de 32 bits em um sistema de 64 bits.

Não parece haver nada infalível em /proc ou /sys ; a saída de /proc/cpuinfo pode fornecer algumas pistas significativas. Se por algum motivo você precisar de uma verificação automatizada, a criação de uma tabela mapeada para o campo "nome do modelo" parece ser um método potencialmente sólido (outros campos, incluindo "modelo", "família cpu" etc. parecem opcionais - eles don ' t aparecer em tudo para mim em um processador Broadcom 2708 ARMv6).

    
por 10.06.2014 / 15:05
10

Instale o pacote 'lshw'.

# lshw
...
    description: Computer
    product: Raspberry Pi 3 Model B Rev 1.2
    width: 32 bits
...
    
por 23.09.2016 / 23:17
2

Tente o seguinte.

// -*- 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;
}

O tamanho do endereço é void* .

    
por 24.03.2017 / 11:30
-3

Não, é um computador de 64 bits. É um Allwinner H8, que é um duplo ARM-7. 8 núcleos, 64 bits, powervr, sgx 544, em velocidade dupla (700mhz).

Portanto, não, é capaz de ser de 64 bits. Apenas o sistema operacional pode ser 32.

    
por 06.11.2016 / 09:26

Tags