web-dev-qa-db-ja.com

BSDがLinuxバイナリを実行できるのはなぜですか?

BSDがLinux(およびその他のUnixライク)バイナリを実行できるのはなぜですか?Linux(およびその他のUnixライクの大部分)はBSDバイナリを実行できませんか?

43
No Time

市場の力。

* BSDよりもLinuxをターゲットにしたプログラムが他にもたくさんあります。多くのソフトウェア ソースコード は移植性が高いので、両方でコンパイルできますが、Linuxバイナリを出荷する多くのソフトウェアプロデューサーは、BSDのために 小規模な市場であるため、そうする必要はありません。 Linuxと共有します。 ¹

ソフトウェアが別のOSでバイナリ形式でしか利用できない場合、ABIエミュレーションはそれを実行させる1つの方法です。これがBSDの機能です。²

かつて、x86 UnixがLinuxよりも市場で過半数を占めたとき、Linuxに iBCS 機能が追加され、SCO Unixなどのために構築されたバイナリを実行できるようになりました。 Linuxの市場シェアが増加したため、この機能への関心は低下し、荒廃に陥ることが許された Linux 2.3開発シリーズ中 。³ SCO訴訟 がこの機能の先駆けとなったLinuxからですが、これは、機能を生み出した市場の力を失ったことの二次的なものだと思います。

Linuxがいつの日かBSDバイナリを実行するためのiBCSのような機能を入手できなかった技術的な理由はありませんが、何らかの理由でBSDとLinuxの市場での地位が切り替わらない限り、そうはなりません。

今日、そのようなことを求める声はほとんどありません。 Linux用にビルドされていない、BSD用のバイナリのみのプログラムをいくつ知っていますか?いくつかあるはずですが、それらのほとんどは Junos のような組み込みBSD用のものだと思います。このような機能は、Linuxで重要な一連のプログラムを実行できなければ、作成されません。


脚注:

  1. ここでは、OS XをBSDとしてカウントしていません。これは、別個のバイナリ互換性の問題だからです。 FreeBSD、OpenBSDおよびNetBSDは、x-86では [〜#〜] elf [〜#〜] を使用しますが、OS Xでは まったく異なる実行可能形式 を使用します。動的リンケージも 実質的に異なる OS Xでは従来のx86 BSDとは異なります。

    Linux⇔OS Xのバイナリ互換性についての詳細は この質問 を参照してください。

  2. FreeBSD ; OpenBSD ; NetBSD

  3. 特定の種類のサメ と同様に、前進を停止するソフトウェアは死にます。ソフトウェアに起こる窒息ではなく、この現象を bit-rot と呼びますが、原因と結果は同じです。

  4. コントラスト NDISwrapper 、これによりLinuxはWindows XP用に作成されたバイナリのみのネットワークカードドライバーを実行できます。ニーズが特定され、ニーズが満たされます。 BSDのみのバイナリを実行するためにこれはどこに必要ですか?

57
Warren Young