Qu'est-ce qui permet à BSD d'exécuter des fichiers binaires Linux (et autres systèmes similaires à Unix), mais Linux (et les autres systèmes similaires à Unix pour la plupart) ne peut pas exécuter des fichiers binaires BSD?
Qu'est-ce qui permet à BSD d'exécuter des fichiers binaires Linux (et autres systèmes similaires à Unix), mais Linux (et les autres systèmes similaires à Unix pour la plupart) ne peut pas exécuter des fichiers binaires BSD?
Réponses:
Les forces du marché.
Il y a beaucoup plus de programmes spécifiquement conçus pour Linux que pour * BSD. Une grande partie du code source du logiciel est suffisamment portable pour pouvoir être compilée sur les deux, mais de nombreux producteurs de logiciels qui envoient des fichiers binaires Linux ne se donnent pas la peine de le faire pour les BSD car ils détiennent des parts de marché inférieures à celles de Linux. ¹
Si un logiciel est uniquement disponible sous forme binaire pour un système d'exploitation différent, l'émulation ABI est un moyen de le faire fonctionner, comme le font les BSD.²
Il était une fois, quand xix Unix détenait une majorité du marché sur Linux, la fonctionnalité iBCS a été ajoutée à Linux pour lui permettre d'exécuter des fichiers binaires conçus pour SCO Unix, etc. L' intérêt pour cette fonction refusé que la part de marché de Linux a augmenté, de sorte qu'il a été autorisé à se délabrer au cours de la série de développement Linux 2.3 .³ Les procès SCO ont aidé à ouvrir la voie de cette fonctionnalité de Linux, mais je crois que ce secondaire à la perte du marché force qui a donné naissance à la fonctionnalité.
Il n’existe aucune raison technique pour laquelle Linux ne puisse un jour avoir une fonctionnalité semblable à iBCS pour exécuter les fichiers binaires BSD, mais il est peu probable que les positions de BSD et de Linux sur le marché basculent sur le marché pour une raison quelconque.
Aujourd’hui, il ya peu d’appel pour une telle chose. Combien de programmes binaires uniquement pour BSD avez-vous connaissance, qui ne sont pas également conçus pour Linux? Il doit y en avoir, mais je suppose que la plupart d'entre eux sont destinés aux BSD intégrés, tels que Junos . Une telle fonctionnalité ne sera pas créée si elle ne permet pas à un ensemble important de programmes de s'exécuter sur Linux qui ne serait autrement pas exécuté.
Notes de bas de page:
Je ne considère pas OS X comme un BSD ici, car il s’agit d’un problème distinct de compatibilité binaire. FreeBSD, OpenBSD et NetBSD utilisent ELF sur x86, alors que OS X utilise un format exécutable totalement différent . La liaison dynamique est également très différente sous OS X par rapport aux BSD x86 traditionnels.
Voir cette question pour plus d'informations sur l'histoire de compatibilité binaire Linux ⇔ OS X.
Comme avec certaines espèces de requin , un logiciel qui cesse d'avancer meurt. Nous appelons ce phénomène le bit-rot plutôt que l’asphyxie quand il s’agit d’un logiciel, mais la cause et l’effet sont les mêmes.
Contraste NDISwrapper , qui permet à Linux d’exécuter des pilotes de carte réseau binaires uniquement écrits pour Windows XP. Un besoin est identifié et un besoin est comblé. Où faut-il utiliser des fichiers binaires BSD uniquement?
binfmt_misc
module, ce qui vous permet d'enregistrer des gestionnaires de format binaires arbitraires. Certaines personnes exécutent les applications Mono de cette façon, même si je pense que c'est rare. Mais comme vous le dites, personne n’a eu beaucoup de raisons d’écrire un gestionnaire de fichiers * BSD binfmt.