Answers:
市场力量。
专门针对Linux的程序比针对* BSD的程序多。许多软件源代码具有足够的可移植性,可以在两者上进行编译,但是许多提供Linux二进制文件的软件生产商对于BSD都不会这样做,因为它们的市场份额总体上小于Linux。¹
如果某个软件只能以二进制形式用于其他操作系统,则ABI仿真是使其运行的一种方法,这就是BSD的工作。²
曾几何时,当x86 Unix在Linux上占据市场多数时,iBCS功能已添加到Linux中,以允许它运行为SCO Unix等构建的二进制文件。随着Linux市场份额的增加,对该功能的兴趣下降了,因此在Linux 2.3开发系列期间,它的功能受到了损害。³SCO 诉讼有助于将此功能引入Linux,但我认为这是市场损失的第二位诞生该功能的力量。
没有任何技术原因可以使Linux某天无法获得类似于iBCS的功能来运行BSD二进制文件,但是除非BSD和Linux的市场地位由于某种原因而改变,否则这不太可能。
今天,几乎没有人要求这种事情。您知道多少个BSD二进制程序,而这些程序不是还为Linux构建的?必须有一些,但是我想其中大多数是用于嵌入式BSD的,例如Junos。如果该功能不允许在Linux上运行否则无法运行的重要程序集,则不会创建此功能。⁴
脚注:
我这里没有将OS X视为BSD,因为这是一个单独的二进制兼容性问题。FreeBSD,OpenBSD和NetBSD 在x86上使用ELF,而OS X使用完全不同的可执行格式。与传统的x86 BSD相比,OS X上的动态链接也有很大不同。
有关Linux⇔OS X二进制兼容性的更多信息,请参见此问题。
与某些种类的鲨鱼一样,停止前进的软件也会死亡。当我们在软件中遇到这种现象时,我们称其为“ 位旋转”而不是“窒息”,但是原因和结果是相同的。
对比NDISwrapper,它允许Linux运行为Windows XP编写的仅二进制的网卡驱动程序。确定需求,并满足需求。在哪里需要运行仅BSD二进制文件?
binfmt_misc
模块执行非本机二进制文件的基础结构,该基础结构允许您注册任意二进制格式的处理程序。有些人以这种方式运行Mono应用程序,尽管我认为这很罕见。但是正如您所说,没有人有太多理由编写* BSD binfmt处理程序。