Dans une discussion sur la rétrocompatibilité dans les ABI de noyau Linux et d'interface graphique , Alan Cox note que " mon noyau 3.6rc continuera d'exécuter un fichier binaire Rogue construit en 1992. X est de nouveau compatible avec les applications bien plus anciennes que Linux. "
Dans quelle mesure les interfaces binaires de Linux Application sont-elles rétrocompatibles ?
Quel est le plus ancien exécutable binaire, écrit et compilé il y a des années, qui fonctionnera toujours sur une distribution courante standard de Linux?
Je suis sûr que tous ces mots sont sujets à interprétation. Mon idée principale est qu'il n'est pas juste de l'exécuter via un émulateur, une machine virtuelle spécialisée ou un traducteur binaire, mais certaines choses de ce genre sont probablement intégrées à des distributions modernes, et en apprendre davantage à ce sujet fait partie du plaisir ici.
Les variations par architecture matérielle, format de fichier exécutable , langage et dépendances majeures du chargement dynamique de la bibliothèque présentent également un intérêt.
Notez que lorsque les règles sont assouplies, voici un exemple de remonter plus loin. La page Web 2002 Exécution de fichiers exécutables a.out sous Red Hat Linux moderne explique comment utiliser de très anciens fichiers exécutables au format a.out pré-ELF après avoir fait modprobe binfmt_aout
et obtenu /lib/ld.so
. libc.so.4
Encore une fois, c’est un intérêt secondaire pour cette question, mais il illustre le genre de choses que peut être impliqué en creusant plus en arrière.
Mise à jour pour les fans de BSD, il est bon de constater qu'iBCS2 prenait en charge les anciennes applications Xenix (telles que zork / dungeon-2.5.6 de 1990) et les applications SCO OpenServer 5.0.x aussi récentes que NetBSD 4.0.1 (depuis 2008): iBCS2 & NetBSD | Amusez-vous avec la virtualisation . Mais la même chose semble cassée dans NetBSD 5.0.x.
Mise à jour 2 : Un an plus tard, après avoir obtenu un badge "Annonceur" pour cette question, je cherche toujours une réponse. Et pour clarifier, puisqu'il s'agit d'API, il devrait s'agir d'un "vrai" fichier binaire (longueur non nulle), qui fonctionne toujours du moins principalement de la manière originale.
la source
Réponses:
Je pense que / bin / true doit être le plus vieux travail ..
Eh bien, pouvez-vous appeler un fichier binaire zéro octet?
la source
go.com
à la fois pour CP / M et DOS qui réexécutait le dernier fichier COM chargé. Donc, il a même été vendu. Donc, en fait, il est antérieur à Linux. Cela a juste changé ce qu'il a fait quand il a sauté de la plate-forme. Parlez de compatibilité ascendante! Nous avons un programme CP / M, DOS et * nix qui fonctionnent tous en même temps.zsh: exec format error
Vous pouvez consulter le rapport d'analyse pour ABI du noyau Linux ici (versions 2.6.36 à 4.4.5):
Le même rapport que vous pouvez trouver pour plusieurs bibliothèques de base Linux sur cette page (Glibc, Qt, cairo, ...). La compatibilité binaire en amont est estimée pour chaque version en pourcentage, afin que vous puissiez tirer des conclusions sur la compatibilité ABI globale pour chaque bibliothèque:
Vous trouverez beaucoup plus de rapports pour environ 700 bibliothèques Linux sur le fichier upstream.rosalinux.ru . Cette ressource n'est plus prise en charge (utilisez plutôt abi-tracker ), mais vous pouvez consulter les rapports des anciennes versions des bibliothèques.
la source