Was ermöglicht es BSD, Linux-Binärdateien (und andere Unix-ähnliche) auszuführen, aber Linux (und andere Unix-ähnliche) können BSD-Binärdateien nicht ausführen?
Was ermöglicht es BSD, Linux-Binärdateien (und andere Unix-ähnliche) auszuführen, aber Linux (und andere Unix-ähnliche) können BSD-Binärdateien nicht ausführen?
Antworten:
Marktkräfte.
Es gibt viel mehr Programme speziell für Linux als für * BSD. Ein Großteil des Software- Quellcodes ist portabel genug, um auf beiden Systemen kompiliert werden zu können, aber viele Softwarehersteller, die Linux-Binärdateien bereitstellen, tun dies für BSDs nicht, da sie auf breiter Front geringere Marktanteile als Linux haben. ¹
Wenn eine Software nur in binärer Form für ein anderes Betriebssystem verfügbar ist, ist die ABI-Emulation eine Möglichkeit, sie zum Laufen zu bringen, wie es die BSDs tun.²
Es war einmal, als x86-Unix eine Marktmehrheit über Linux verfügte, wurde die iBCS- Funktion zu Linux hinzugefügt, um die Ausführung von Binärdateien zu ermöglichen, die für SCO-Unix und dergleichen erstellt wurden. Das Interesse an dieser Funktion nahm ab, als der Marktanteil von Linux zunahm, so dass es während der Linux 2.3-Entwicklungsserie in Verfall geraten konnte. Die SCO-Klagen halfen, diese Funktion aus Linux herauszuführen, aber ich glaube, das ist sekundär zum Verlust des Marktes Kraft, die das Merkmal hervorgebracht hat.
Es gibt keinen technischen Grund, warum Linux eines Tages keine iBCS-ähnliche Funktion zum Ausführen von BSD-Binärdateien erhalten konnte, aber es ist unwahrscheinlich, dass sich die Marktposition von BSD und Linux aus irgendeinem Grund ändert.
Heute gibt es wenig Anlass für so etwas. Wie viele reine Binärprogramme für BSD sind Ihnen bekannt, die nicht auch für Linux entwickelt wurden? Es muss welche geben, aber ich schätze, die meisten sind für eingebettete BSDs wie Junos . Eine solche Funktion wird nicht erstellt, wenn unter Linux keine wichtigen Programme ausgeführt werden können, die sonst nicht ausgeführt würden
Fußnoten:
Ich zähle OS X hier nicht als BSD, da dies ein separates binäres Kompatibilitätsproblem darstellt. FreeBSD, OpenBSD und NetBSD verwenden ELF auf x86, während OS X ein völlig anderes ausführbares Format verwendet . Die dynamische Verknüpfung unterscheidet sich unter OS X erheblich von den herkömmlichen x86-BSDs.
Weitere Informationen zur binären Kompatibilität von Linux und OS X finden Sie in dieser Frage .
Wie bei bestimmten Haiarten stirbt Software, die sich nicht mehr vorwärts bewegt. Wir nennen dieses Phänomen eher Bit-Rot als Ersticken, wenn es um Software geht, aber Ursache und Wirkung sind gleich.
Contrast NDISwrapper , mit dem Linux nur binäre Netzwerkkartentreiber ausführen kann, die für Windows XP geschrieben wurden. Ein Bedarf wird identifiziert und ein Bedarf wird erfüllt. Wo müssen BSD-Binärdateien ausgeführt werden?
binfmt_misc
Modul auszuführen , wodurch Sie beliebige Binärformat-Handler registrieren können. Einige Leute führen Mono-Anwendungen auf diese Weise aus, obwohl ich denke, dass es selten ist. Aber wie Sie sagen, hat noch niemand einen Grund gehabt, einen * BSD-binfmt-Handler zu schreiben.