LinuxカーネルとGUI ABIの下位互換性に関するディスカッション で、Alan Coxは、「私の3.6rcカーネルは、1992年に構築されたRogueバイナリを引き続き実行します。Xが復活しました。 Linuxよりはるかに古いアプリと互換性があります。 "
Linuxはどの程度下位互換性があるのでしょうか アプリケーションバイナリインターフェイス ?
実際に何年も前に作成およびコンパイルされた、最も古いバイナリ実行可能ファイルは、現代の標準的な汎用Linuxディストリビューションで引き続き実行されますか?
これらの言葉はすべて解釈の対象となると思います。私の主な概念は、エミュレーターや専用の仮想マシンやバイナリトランスレーターを介して実行するのは公平ではないということですが、そのようなものはおそらくいくつかの最新のディストリビューションに組み込まれているので、それについて学ぶことはここでの楽しみの一部です。
ハードウェアアーキテクチャ、 (実行可能ファイル形式 、言語、および主要なライブラリの動的読み込みの依存関係によるバリエーションも興味深いものです。
ルールが緩和されている場合は、ここに戻る例を1つ示します。 2002年のWebページ 最新のRed Hat Linuxでのa.out実行可能ファイルの実行 はreally古いLinux pre-ELF a.out-format実行可能ファイルの実行後の使用について説明していますmodprobe binfmt_aout
と/lib/ld.so
とlibc.so.4
の取得繰り返しになりますが、これはこの質問の周辺の関心事ですが、さらに掘り下げるときに関与する可能性がある種類のことを示しています。
UpdateBSDファンの皆さん、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:1年後、この質問の「アナウンサー」バッジを受け取った後も、私はまだ答えを探しています。明確にするために、これはAPIに関するものであるため、少なくともほとんどが元の方法で機能する「実際の」バイナリー(長さがゼロ以外)である必要があります。
/ bin/trueは最も古いものである必要があると思います。
さて、あなたはゼロバイトのファイルをバイナリと呼ぶことができますか?
touch /tmp/old_true
chmod 755 /tmp/old_true
/tmp/old_true
echo $?
では、Linuxアプリケーションのバイナリー・インターフェースはどれほど後方互換性があるのでしょうか。
LinuxカーネルABI here (2.6.36-4.4.5バージョン)の分析レポートを確認できます。
このページ (Glibc、Qt、cairo、...)で、いくつかのLinuxベースライブラリについて同じレポートを見つけることができます。バイナリの下位互換性はリリースごとにパーセントで推定されるため、各ライブラリの全体的なABI互換性について結論を出すことができます。
pstream.rosalinux.r で見つけることができる約700のLinuxライブラリのはるかに多くのレポート。このリソースはサポートされなくなりました(代わりに abi-tracker を使用してください)が、ライブラリの古いリリースのレポートを確認できます。