複数のライブラリと複数のアーキテクチャ

複数のライブラリと複数のアーキテクチャ

マルチライブラリとマルチアーキテクチャ:これらの2つの用語は単に同義語ですか?そうでない場合はどう違いますか?

同じシステムで32ビットアプリケーションと64ビットアプリケーションを実行するにはそれを呼び出す必要がありますか?マルチアーキテクチャまたはマルチライブラリ?

ベストアンサー1

同じ一般的な問題に対する異なるアプローチですが、範囲が異なります。つまり、異なるアーキテクチャ用に構築されたバイナリを実行します。

バイナリを実行するには3つが必要です。必要なライブラリー(動的ローダーがある場合を含む)、システム呼び出しのサポート、含まれている機械命令を解釈する手段です。 Multilibとmultiarchは最初の問題を解決します。

Multilib は、各アーキテクチャに対して既知のバリアントテーブルを使用します。これは最初にABIバリアントを解決しました。例えばlib32MIPSで最も一般的に使用されるのは、x86の32ビットサポートです。通常、32ビットライブラリディレクトリとして定義されます(この定義はx86のみ)。したがって、multilib設定は64ビットローダーを提供できます/lib/lib32コンパイラ側では、-m32multilibを使用して32ビットバイナリを構築することを指定します。

マルチアーキテクチャはより一般的です。その定義はホストアーキテクチャに依存しません。すべてのライブラリは、ターゲットlibアーキテクチャなどに対応するサブディレクトリにあります/usr/lib/x86_64-linux-gnu//usr/lib/i386-linux-gnuコンパイラ側では、適切なクロスコンパイラを使用できます。

32ビットバイナリの実行に使用する方法は、ディストリビューションによって異なります。 Debianとその派生製品はmultiarchを使用し、他のディストリビューションはmultilibを使用します。

おすすめ記事