é o meu Linux ARM de 32 ou 64 bits?

sob uma inteligência, sei que posso olhar o resultado de uname -m para saber se meu sistema operacional é 32 ou 64 bits, mas sob 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 maneira mais fácil?

Comentários

  • braço 7 é de 32 bits . ARMv8-A architecture, announced in October 2011,[6] adds support for a 64-bit address space and 64-bit arithmetic. – wikipedia
  • @richard Eu estava supondo que sim, mas então qual é o nome da variante de 64 bits?
  • I não ‘ tenha acesso a uma máquina ARM, mas qual é a saída de uname -a e gcc -v? Isso pode ser útil.
  • 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.2 F32-bit_architecture
  • Arm foi a última da CPU de 32 bits a ir para 64 bits (excluindo aquelas que morreram). A maioria foi para 64 bits e depois morreu, devido ao marketing deficiente – supondo que seja b etter é o suficiente. O Intel x86 foi o penúltimo, embora tenha sido a AMD que adicionou 64 bits.

Resposta

Lá Existem várias gradações, já que você pode executar um sistema operacional de 32 bits ou misto em uma CPU com capacidade para 64 bits. Veja kernel de 64 bits, mas todos os processos executáveis ELF de 32 bits, como é isso? para uma discussão detalhada (escrito para x86, mas a maioria se aplica para armar também).

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 apresenta o conjunto de instruções de 64 bits.

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

$ uname -m armv7l 

Em um processador de 64 bits, você “veria uma string começando com armv8 (ou acima ) se o próprio processo uname for um processo de 32 bits ou aarch64 se for um processo de 64 bits. (Veja também https://stackoverflow.com/questions/45125516/possible-values-for-uname-m )

Comentários

  • Eu não ‘ não contesto sua resposta, mas infelizmente o android É UM LINUX, então, suponha que haja algum comando, EM ALGUM LUGAR, que o mostra localmente e não para ler um documentação em alguma página
  • @THESorcerer Android usa um kernel Linux, mas não é um sistema Linux. Ele não possui ferramentas de usuário Linux (apenas um subconjunto muito pequeno). No Android, acho que o suporte de 64 bits é consistente no sistema operacional base, então cat /proc/$$/maps informará se o sistema é de 64 bits ou 32 bits a partir de uma linha de comando adb.
  • Acredito que o Raspberry Pi 3, que é ARMv8 (CRC, sem criptografia opcional), relatará armv7l, embora seja ARMv8. Portanto, ‘ tenho certeza de que a CPU errada será relatada.
  • @jww Se relatar armv7l, significa que você ‘ está executando um kernel de 32 bits. Você pode executar um kernel de 32 bits em uma CPU de 64 bits. Se você quiser informações sobre a CPU, leia /proc/cpuinfo.
  • uname -m apenas retorna ” aarch64 “. / proc / cpuinfo não ‘ nem sempre contém um nome para um processador.

Resposta

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

Em um sistema Linux, você pode facilmente, embora não de forma definitiva, 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 à prova de falhas 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, criar uma tabela mapeada para o campo “nome do modelo” parece um método potencialmente válido (outros campos, incluindo “modelo”, “família de cpu”, etc. parecem opcionais – eles não ” não apareça para mim em um processador Broadcom 2708 ARMv6).

Comentários

  • Então armv7l é de 32 bits, certo?
  • @bakalolo Leia a pergunta e a resposta aceita lentamente;)

Resposta

Instale o pacote “lshw” .

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

Resposta

Parece que a maioria das maneiras de ver a contagem de bits é de alguma forma saiba que arm7 = 32 bits e enquanto isso pode ser verdade, mas que tal

pi@rpi9:~ $ getconf LONG_BIT 32 

E se você quiser procurar o modelo de cpu, eu normalmente uso o arch

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 

Comentários

  • getconf LONG_BIT é muito direto

Resposta

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*.

Comentários

Resposta

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

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

Comentários

  • onde você descobriu que os OP ‘ s usando Allwinner H8? A arquitetura é armv7l que claramente não é um De 64 bits
  • É ‘ melhor demonstrar uma maneira de encontrar as informações desejadas dentro do sistema em vez de usar terceiros informações de terceiros de fontes externas. É mais adequado ser um comentário do que uma resposta (daí todos os votos negativos).

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *