在 Linux 上运行的最古老的二进制文件?

nea*_*mcb 33 linux compatibility history elf

讨论 Linux 内核和 GUI ABI 的向后兼容性时,Alan Cox 指出“我的 3.6rc 内核仍将运行 1992 年构建的 Rogue 二进制文件。X 重新兼容比 Linux 更古老的应用程序。

那么 Linux应用程序二进制接口的向后兼容程度如何?

什么是最古老的二进制可执行文件,实际上是在几年前编写和编译的,仍然可以在现代股票通用 Linux 发行版上运行?

我相信所有这些话都可以解释。我的主要观点是通过模拟器或专门的虚拟机或二进制翻译器运行它是不公平的,但一些这样的东西可能内置在一些现代发行版中,了解它是这里乐趣的一部分。

硬件架构、可执行文件格式、语言和主要库动态加载依赖项的变化也很有趣。

请注意,当规则放宽时,这里有一个更进一步的例子。2002年的网页运行的a.out现代的Red Hat Linux可执行会谈有关使用真的老的Linux预ELF的a.out格式的可执行文件后做事modprobe binfmt_aout ,并获得/lib/ld.solibc.so.4 同样,对于这个问题,周边兴趣的,但说明了各种各样的事情,进一步挖掘时可能会涉及。

为 BSD 粉丝更新,很高兴看到 iBCS2 支持旧的 Xenix 应用程序(如 1990 年的 zork/dungeon-2.5.6)和 SCO OpenServer 5.0.x 应用程序,最近支持 NetBSD 4.0.1(2008 年):iBCS2 & NetBSD | 虚拟化的乐趣。但同样的事情在 NetBSD 5.0.x 中似乎被打破了。

更新 2:一年后,在这个问题获得“播音员”徽章后,我仍在寻找答案。澄清一下,因为这是关于 API 的,它应该是一个“真正的”二进制(非零长度),至少仍然以原始方式工作。

Jer*_*her 11

我认为 /bin/true 必须是最古老的工作..

那么,你能把零字节文件称为二进制文件吗?

touch /tmp/old_true
chmod 755 /tmp/old_true
/tmp/old_true
echo $?
Run Code Online (Sandbox Code Playgroud)

  • @nealmcb——有一个名为`go.com` 的 0 字节程序,用于 CP/M 和 DOS,它会重新运行加载的最后一个 COM 文件。所以,它甚至被卖掉了。所以,事实上,它早于 Linux。它只是改变了它跳平台时所做的事情。谈论向后兼容性!我们有一个 CP/M、DOS 和 *nix 程序同时运行。 (3认同)