*nix実行可能ファイルの互換性

*nix実行可能ファイルの互換性

私が探していますこの計画今、私は1つの実行可能ファイルが同じ祖先を持つ2つのシステムで実行できるかどうか疑問に思います。 (それなら同じコアでしょうか?)

たとえば、シナリオによると、次のようになります。Solaris <- システム V R4 <- BSD 4.3もしそうなら、BSD *(OpenBSD、FreeBSD、NetBSD)とSolarisは同じ実行ファイルを実行できますか?

PS おそらく、この質問はあなたにとって当然で無意味であるかもしれませんが、私は* nixに完全に初めて接する人なので、私にとっては重要です。

ベストアンサー1

短い答え:いいえ。

通常のレベルの回答:ターゲットオペレーティングシステムでサポートされている場合はそうです。

答えが長いです...

最初に注目すべき点は、ベンダーごとに異なるチップセットを使用できることです。したがって、SolarisバイナリはSPARCチップ用にコンパイルできます。 Intel / AMDシステムでは機能しません。同様に、AIXもPowerPCにあります。 HP-UXはPA-RISCにあります。これらすべての問題を無視して、「Intel / AMD」スペースに集中します。

次の問題は、異なるオペレーティングシステムが異なるカーネルを公開する可能性があることです。システムコール。これは、アプリケーションによるカーネル呼び出しが期待どおりに機能しないことを意味します。これは明らかに問題です。ただし、ターゲットカーネル可能「ABI互換性層」を提供する機能、カーネル(FreeBSDカーネル仮定)はLinuxバイナリを実行しようとしていることを検出し、LinuxカーネルABIとデフォルトカーネルABIの間で変換できます。

これNext問題はライブラリの1つです。 Linuxバイナリは、ホスティングオペレーティングシステムにない可能性がある特定のバージョンのglibcをロードできると予想しています。これ可能この問題は、必要なライブラリをコピーすることで解決できます。繰り返しますが、オペレーティングシステムは、これらのライブラリを簡単にインストールできるようにパッケージを提供するなど、簡単に作成できます。

すべてのバイナリの後可能ランニング:-)

1990年代に、Linuxにはこれらの作業を可能にするiBCSモジュールがありました。たとえば、LinuxでSCO Unixプログラムを実行できます。概念証明として、私のコンピュータでSCO Unix Oracleを実行しました。効果はとても良いです!明らかにサプライヤーのサポートがないため、本番には適していません。 :-)

Linuxはこの分野で大きな足場を築くようになり、他のオペレーティングシステムでは、Linuxプログラムがそのオペレーティングシステムで実行できるように互換性層を追加しようとしています。

したがって、オペレーティングシステムがサポートしている場合そして正しくインストールして設定したら可能他のUnixでいくつかのプログラムを実行する能力。

おすすめ記事