マルチライブラリとマルチアーキテクチャ:これらの2つの用語は単に同義語ですか?そうでない場合はどう違いますか?
同じシステムで32ビットアプリケーションと64ビットアプリケーションを実行するにはそれを呼び出す必要がありますか?マルチアーキテクチャまたはマルチライブラリ?
答え1
同じ一般的な問題に対する異なるアプローチですが、範囲が異なります。つまり、異なるアーキテクチャ用に構築されたバイナリを実行します。
バイナリを実行するには3つが必要です。必要なライブラリー(動的ローダーがある場合を含む)、システム呼び出しのサポート、含まれている機械命令を解釈する手段です。 Multilibとmultiarchは最初の問題を解決します。
Multilib は、各アーキテクチャに対して既知のバリアントテーブルを使用します。これは最初にABIバリアントを解決しました。例えばlib32
MIPSで最も一般的に使用されるのは、x86の32ビットサポートです。通常、32ビットライブラリディレクトリとして定義されます(この定義はx86のみ)。したがって、multilib設定は64ビットローダーを提供できます/lib
。/lib32
コンパイラ側では、-m32
multilibを使用して32ビットバイナリを構築することを指定します。
マルチアーキテクチャはより一般的です。その定義はホストアーキテクチャに依存しません。すべてのライブラリは、ターゲットlib
アーキテクチャなどに対応するサブディレクトリにあります/usr/lib/x86_64-linux-gnu/
。/usr/lib/i386-linux-gnu
コンパイラ側では、適切なクロスコンパイラを使用できます。
32ビットバイナリの実行に使用する方法は、ディストリビューションによって異なります。 Debianとその派生製品はmultiarchを使用し、他のディストリビューションはmultilibを使用します。