sous un renseignement je sais que je peux regarder le résultat de uname -m
savoir si mon système d'exploitation est en 32 ou 64 bits, mais sous ARM cela donne:
armv7l
J'ai déduit de
file /usr/bin/ls
que je suis sur un système d'exploitation 32 bits, mais comment puis-je le savoir plus facilement?
ARMv8-A architecture, announced in October 2011,[6] adds support for a 64-bit address space and 64-bit arithmetic.
- wikipediauname -a
etgcc -v
? Ceux-ci pourraient être utiles.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.
- fr.wikipedia.org/wiki/ARM_architecture#64.2F32-bit_architectureRéponses:
Il existe plusieurs gradations, car vous pouvez exécuter un système d'exploitation 32 bits ou mixte sur un processeur compatible 64 bits. Voir le noyau 64 bits, mais tous les processus exécutables ELF 32 bits en cours d'exécution, comment est-ce? pour une discussion détaillée (écrite pour x86, mais la majeure partie s’applique également à arm).
Vous pouvez trouver le modèle de processeur dans
/proc/cpuinfo
. Par exemple:ARMv7 (et au-dessous) est 32 bits. ARMv8 introduit le jeu d’instructions 64 bits.
Si vous voulez voir si votre système prend en charge les fichiers binaires 64 bits, vérifiez l'architecture du noyau:
Sur un processeur 64 bits, vous verriez une chaîne commençant par
armv8
(ou supérieure) si leuname
processus lui-même est un processus 32 bits ouaarch64
s'il s'agit d'un processus 64 bits. (Voir aussi https://stackoverflow.com/questions/45125516/possible-values-for-uname-m )la source
cat /proc/$$/maps
, vous saurez si le système est en version 64 bits ou 32 bits à partir d'une ligne de commande adb.armv7l
même si son ARMv8. Donc, je suis sûr que le mauvais processeur sera signalé.armv7l
, cela signifie que vous utilisez un noyau 32 bits. Vous pouvez exécuter un noyau 32 bits sur un processeur 64 bits. Si vous voulez des informations sur la CPU, lisez/proc/cpuinfo
.Comme le souligne richard, les
armv7
variantes sont toutes en 32 bits, il n'y a donc pas d'étiquette redondantearmv7-32
, etc.Sur un système Linux, vous pouvez facilement, bien que pas vraiment, vérifier en exécutant un exécutable commun:
Je dis "pas définitivement" car il est possible d'exécuter des exécutables 32 bits sur un système 64 bits.
Il ne semble pas y avoir quoi que ce soit d'infaillable en
/proc
ou/sys
; la sortie de/proc/cpuinfo
peut fournir des indices significatifs. Si, pour une raison quelconque, vous avez besoin d’une vérification automatique, la création d’une table mappée sur le champ "nom du modèle" semble être une méthode potentiellement judicieuse (d’autres champs, y compris "modèle", "famille de processeurs", etc. pas du tout pour moi sur un processeur Broadcom 2708 ARMv6).la source
Installez le paquet 'lshw'.
la source
On dirait que la plupart des façons de voir le nombre de bits est de savoir que arm7 = 32 bits et que cela peut être vrai, mais qu'en est-il
Et si vous voulez chercher le modèle de processeur, j'utilise normalement arch
la source
Essayez ce qui suit.
La taille de l'adresse est
void*
.la source
sizeof
les retourssize_t
qui doivent être imprimés avec%zu
. L'utilisation d'un spécificateur de format incorrect appelle un comportement indéfiniNon, c'est un ordinateur 64 bits. C'est un Allwinner H8, qui est un double ARM-7. 8 cœurs, 64 bits, powervr, sgx 544, à double vitesse (700 MHz).
Donc non, il est capable d'être en 64 bits. Juste le système d'exploitation pourrait être 32.
la source