web-dev-qa-db-fra.com

Méthode de ligne de commande simple pour déterminer une chaîne d'architecture spécifique ARM?

J'essaie d'écrire un script qui déterminera les actions en fonction de l'architecture de la machine. J'utilise déjà uname -m pour rassembler la ligne d'architecture, mais je ne sais pas combien d'architectures ARM il y a, et je ne sais pas si l'une est armhf, armel, ou arm64.

Comme cela est nécessaire pour que ce script détermine si des parties du script peuvent être exécutées ou non, j'essaie de trouver un moyen simple de déterminer si l'architecture est armhf, armel ou arm64. Existe-t-il une commande simple ou simple qui peut être utilisée pour afficher armhf, armel ou arm64?

Le script est spécifiquement écrit pour les systèmes Debian et Ubuntu, et je marque comme tel en gardant cela à l'esprit (il se ferme automatiquement si vous n'êtes pas sur l'une de ces distributions, mais cela pourrait également être appliqué de manière beaucoup plus large si le commande (s) existent)


EDIT: récemment appris qu'armel est mort, et les constructeurs de logiciels arm64 (PPA ou virtuels) ne sont pas les plus stables. J'ai donc une recherche générique qui trouve arm* et en supposant armhf, mais il est toujours nécessaire de trouver un liner qui retourne l'un des trois - que ce soit une commande Ubuntu/Debian ou un appel au noyau ou quelque chose.

28
Thomas Ward
dpkg --print-architecture

affichera l'architecture principale de la machine sur laquelle il est exécuté. Ce sera armhf sur une machine exécutant 32 bits ARM Debian ou Ubuntu (ou un dérivé), arm64 sur une machine exécutant ARM 64 bits.

Notez que l'architecture en cours d'exécution peut être différente de l'architecture matérielle ou même de l'architecture du noyau. Il est possible d'exécuter i386 Debian sur un processeur Intel ou AMD 64 bits, et je pense qu'il est possible d'exécuter armhf sur un processeur 64 bits ARM CPU. Il est même possible d'avoir principalement i386 binaires (donc l'architecture principale est i386) sur un AMD64 noyau ...

48
Stephen Kitt