bajo una inteligencia, sé que puedo ver el resultado de uname -m
para saber si mi SO es 32 o 64 bits, pero bajo ARM esto da:
armv7l
Deduje de
file /usr/bin/ls
que «estoy en un sistema operativo de 32 bits, pero ¿cómo puedo saber esto de una manera más fácil?
Comentarios
- el brazo 7 es 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 Lo estaba adivinando, pero ¿cuál es el nombre de la variante de 64 bits?
- I no ‘ no tiene acceso a una máquina ARM, pero cuál es la salida de
uname -a
ygcc -v
? Esos pueden ser útiles. -
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 fue el último de la CPU de 32 bits en pasar a 64 bits (excluyendo los que murieron). La mayoría pasó a 64 bits y luego murió, debido a un marketing deficiente, suponiendo que sea b etter es suficiente. Intel x86 fue el penúltimo, aunque fue AMD el que agregó 64 bits.
Respuesta
Allí Hay varias gradaciones, ya que puede ejecutar un sistema operativo mixto o de 32 bits en una CPU con capacidad para 64 bits. Consulte kernel de 64 bits, pero todos los procesos ejecutables de ELF de 32 bits, ¿cómo es esto? para obtener una discusión detallada (escrita para x86, pero la mayoría se aplica para armar también).
Puede encontrar el modelo del procesador en /proc/cpuinfo
. Por ejemplo:
$ cat /proc/cpuinfo Processor : ARMv7 Processor rev 10 (v7l)
ARMv7 (y menos) es de 32 bits. ARMv8 presenta el conjunto de instrucciones de 64 bits.
Si desea ver si su sistema admite binarios de 64 bits, consulte la arquitectura del kernel :
$ uname -m armv7l
En un procesador de 64 bits, «vería una cadena que comienza con armv8
(o superior ) si el proceso uname
en sí es un proceso de 32 bits, o aarch64
si es un proceso de 64 bits. (Consulte también https://stackoverflow.com/questions/45125516/possible-values-for-uname-m )
Comentarios
- No ‘ t refutar tu respuesta, pero desafortunadamente android ES UN LINUX, entonces, se supone que hay algún comando, EN ALGÚN LUGAR que lo muestre localmente y no para leer un documentación en alguna página
- @THESorcerer Android usa un kernel de Linux pero no es un sistema Linux. No tiene herramientas terrestres de usuario de Linux (solo un subconjunto muy pequeño). En Android, creo que el soporte de 64 bits es consistente en el sistema operativo base, por lo que
cat /proc/$$/maps
le permitirá saber si el sistema es de 64 bits o 32 bits desde una línea de comandos adb. - Creo que Raspberry Pi 3, que es ARMv8 (CRC, sin Crypto opcional) informará
armv7l
aunque sea ARMv8. Así que ‘ estoy bastante seguro de que se informará de la CPU incorrecta. - @jww Si informa
armv7l
, significa que ‘ está ejecutando un kernel de 32 bits. Puede ejecutar un kernel de 32 bits en una CPU de 64 bits. Si desea información sobre la CPU, lea/proc/cpuinfo
. - uname -m simplemente devuelve » aarch64 «. / proc / cpuinfo tampoco ‘ siempre contiene un nombre para un procesador.
Respuesta
Como señala Richard, armv7
variantes son todas de 32 bits, por lo que no hay una etiqueta redundante armv7-32
, etc.
En un sistema Linux, puede verificar fácilmente, aunque no de manera definitiva, examinando un ejecutable común:
> which bash /bin/bash > file /bin/bash /bin/bash: ELF 32-bit LSB executable, ARM, version 1 (SYSV) ...
Digo «no definitivamente» porque es posible ejecutar ejecutables de 32 bits en un sistema de 64 bits.
No parece haber nada infalible en /proc
o /sys
; el resultado de /proc/cpuinfo
puede proporcionar algunas pistas importantes. Si por alguna razón necesita una verificación automatizada, la creación de una tabla asignada al campo «nombre del modelo» parece un método potencialmente sólido (otros campos, incluidos «modelo», «familia de cpu», etc. parecen opcionales, no » no aparece para mí en un procesador Broadcom 2708 ARMv6).
Comentarios
- Entonces armv7l es de 32 bits, ¿verdad?
- @bakalolo Lea la pregunta y la respuesta aceptada lentamente;)
Respuesta
Instale el paquete «lshw» .
# lshw ... description: Computer product: Raspberry Pi 3 Model B Rev 1.2 width: 32 bits ...
Respuesta
Parece que la mayoría de las formas de ver el recuento de bits es de alguna manera sé que arm7 = 32 bit y si bien eso puede ser cierto, pero ¿qué pasa con
pi@rpi9:~ $ getconf LONG_BIT 32
Y si quieres buscar el modelo de cpu, normalmente uso 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
Comentarios
- getconf LONG_BIT es muy sencillo
Respuesta
Intente lo siguiente.
// -*- 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; }
El tamaño de la dirección es void*
.
Comentarios
-
sizeof
devuelvesize_t
que debe imprimirse con%zu
. Usar el especificador de formato incorrecto invoca un comportamiento indefinido - y el tamaño de void * no es ‘ t necesariamente el ancho de bits de la arquitectura. ¿Alguna vez has oído hablar de x32 ABI sites.google.com/site/x32abi
- De manera similar, getconf -a | grep LONG_BIT
- Esto no ‘ no le dice nada más que la naturaleza de su compilador .
Respuesta
No, es una computadora de 64 bits. Es una Allwinner H8 , bruja es un ARM-7 doble. 8 núcleos, 64 bits, powervr, sgx 544, a doble velocidad (700 mhz).
Así que no, es capaz de ser de 64 bits. Solo el sistema operativo podría ser 32.
Comentarios
- ¿Dónde encontró que los OP ‘ utilizan Allwinner H8? La arquitectura es armv7l, que claramente no es una Uno de 64 bits
- Es ‘ es mejor demostrar una forma de encontrar la información deseada desde dentro del sistema en lugar de utilizar terceros -Información del partido de fuentes externas. Esto es más adecuado para ser un comentario que una respuesta (de ahí todos los votos negativos).