特定のARMアーキテクチャ文字列を決定する簡単なコマンドライン方法?


24

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

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

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


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


case $(arch) in ; armf)... ;; armel)... ;; arm64)... ;; *) exit ;; esacこんな感じ?
コスタ

@Costasはい、それは事実上私が望んでいることです、アーチを得ることは難しい部分です。ソリューションはディストリビューションおよびOSモデル固有である可能性があるため、DebianとUbuntuは類似しており、私のターゲットです。したがって、アーチを取り出して使用できるソリューションは素晴らしいでしょう。(これは純粋なプログラミングの問題のいずれか、私は特定のアーチをつかむためにコマンドを必要としない-私は既に持っているi386i686x86_64に基づく例uname -mが、ために何もarm??...あるいは、少なくとも、何もことを識別しarmhfarmelまたはarm64) 。
トーマス区

どういう意味ですか?
コスタ

1
@Costas ARMセットアップでは、たとえばuname -m特定のアームボードを吐き出しarmv7lます。これは、明示的にそれはだか言っていないarmelarmhfまたはarm64私は必要なものである- $(arch)との互換性のないOSアーキテクチャアウト雑草のためのように終わるために。
トーマス区

/proc/config.gzがある場合は、解析する方が良いかもしれません。
梅干

回答:


38
dpkg --print-architecture

実行されているマシンのプライマリアーキテクチャを出力します。これはarmhfarm6464ビットARMを実行しているマシン上で、32ビットARM DebianまたはUbuntu(または派生物)を実行しているマシン上にあります。

実行中のアーキテクチャは、ハードウェアアーキテクチャやカーネルアーキテクチャとは異なる場合があることに注意してください。これは、実行することが可能ですi386、64ビットのIntelまたはAMD CPUにDebianを、そして私はそれを実行することは可能だと信じarmhf、64ビットのARM CPUに。カーネル上にほとんどのi386バイナリ(プライマリアーキテクチャはi386)を持つことさえ可能amd64です...


ただし、これにより、スクリプトのパッケージに必要なアーキテクチャが決まります。今日はこれをテストします、ありがとう。
トーマス区

1
Androidデバイスには、dpkgコマンドはありません。Androidデバイスのアーキテクチャを検出するにはどうすればよいですか?
Dr.jacky

@ Mr.Hydeこの質問は、特にDebianとUbuntuを対象としています。ここまたはandroid.stackexchange.comでAndroidの回答が必要な場合は、新しい質問をすることをお勧めします。
スティーブンキット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.