すべてのLinuxアーキテクチャを検出するための最良の方法は何ですか?

すべてのLinuxアーキテクチャを検出するための最良の方法は何ですか?

Bashスクリプトは現在のLinuxアーキテクチャを検出する必要があります。時にはunameが情報を提供するのを見たことがありますが、難しいです。 unameコマンド以外の場所に表示されるかどうかは、システムによって異なります。

Debian ベースのシステムではこのコマンドが表示されますが、dpkg --print-architectureDebian ベースのシステムにのみ適用されます。

i386、amd64、armhf、armel、arm64などであることを確認する必要があります。

すべてのLinuxシステムで動作する「汎用」ツールはありますか?現在インストールされているカーネルアーキテクチャが必要です。私のハードウェアがサポートできるアーキテクチャではありません。

ベストアンサー1

GNUコアツールカーネルがコンパイルされたアーキテクチャを印刷し、archコマンドが付属しています。uname -m

dpkg --print-architectureシステムにどのアーキテクチャのバイナリをインストールできるかを知りたい場合は、このツールが適しています(アプリケーションバイナリインタフェース、ABI)。いわゆる話すことに注意してください。マルチアーキテクチャ複数のアーキテクチャを備えたシステム。例:Debian PCは、64ビットCPUで64ビットカーネルと32/64ビット混合ソフトウェアを実行できます。これは、従来の32ビットアプリケーションを実行しながら64ビットの利点を活用したい場合に便利です。 Debian と派生ディストリビューションはこの点で非常に強力ですが、他のディストリビューションが同様の機能を提供しているかどうかはわかりません。

chroot環境またはコンテナ内で使用されるアーキテクチャを見つけるための移植可能な方法(ABIなど)を探している場合は、コンパイルされたシステムファイルの1つのアーキテクチャを確認できます。

$ file -Lb /usr/bin/ld | cut -d, -f2
 x86-64

おすすめ記事