web-dev-qa-db-ja.com

特定のARMアーキテクチャ文字列を特定するための簡単なコマンドラインメソッド?

マシンのアーキテクチャに基づいてアクションを決定するスクリプトを記述しようとしています。私はすでにuname -mを使用してアーキテクチャー行を収集していますが、ARMアーキテクチャーがいくつあるかわからないし、armhfarmel、またはarm64のどれであるかわかりません。

これは、このスクリプトがスクリプトの一部を実行できるかどうかを判断するために必要なため、アーキテクチャがarmhfarmel、またはarm64であるかどうかを判断する簡単な方法を見つけようとしています。 armhfarmel、またはarm64のいずれかを出力するために使用できるワンライナーまたはシンプルなコマンドはありますか?

スクリプトは、DebianおよびUbuntuシステム用に特別に作成されており、私はこれを念頭に置いてタグを付けています(これらのディストリビューションを使用していない場合は自動的に終了しますが、これは、コマンドが存在します)


編集:最近、armelが死んでいて、arm64ソフトウェアビルダー(PPAまたは仮想ベース)が最も安定していないことがわかりました。したがって、arm*を見つけてarmhfを想定するワイルドカード検索がありますが、それでも、Ubuntu/Debianコマンドであれ、カーネルコールであれ、3つのうちの1つを返す1つのライナーを理解する必要があります。

28
Thomas Ward
dpkg --print-architecture

実行されているマシンの主要なアーキテクチャを出力します。これは、32ビットを実行しているマシンではarmhf ARM DebianまたはUbuntu(または派生物)、64ビットARMを実行しているマシンではarm64になります。

実行中のアーキテクチャは、ハードウェアアーキテクチャまたはカーネルアーキテクチャと異なる場合があることに注意してください。 64ビットIntelまたはAMD CPUでi386 Debianを実行することは可能です。64ビットARM CPUでarmhfを実行することは可能だと思います。ほとんどのi386バイナリをi386カーネルに置くことも可能です(そのため、主要なアーキテクチャはAMD64です)...

48
Stephen Kitt