GNU/Linux >> Tutoriels Linux >  >> Linux

glibc :fichier elf OS ABI invalide

Ce n'est pas votre version du noyau qui pose problème.

Le chargeur de votre système ne prend pas en charge le nouveau Linux ABI. Jusqu'à relativement récemment, les binaires Linux ELF utilisaient le System V ABI. Récemment, à l'appui de STT_GNU_IFUNC, le Linux ABI a été ajouté. Vous devrez mettre à jour votre système Bibliothèque C pour avoir un chargeur qui prend en charge STT_GNU_IFUNC, puis il reconnaîtra également les objets ELF avec le Linux Type ABI.

Voir l'entrée de blog de Dave Miller sur STT_GNU_IFUNC pour Sparc (archivé) pour comprendre ce que fait STT_GNU_IFUNC, si cela vous intéresse.


Si vous mettez la main sur le chargeur d'un système plus récent, vous pourrez peut-être le faire fonctionner en utilisant cela. Mais vous devrez transporter le chargeur partout où votre programme ira. Vous pouvez soit compiler votre programme pour utiliser ce chargeur comme expliqué ici, soit compiler votre programme et le corriger plus tard en utilisant patchelf, d'une manière similaire à ce que je mentionne ici. J'ai pu exécuter un programme qui me donnait le OS ABI invalid erreur sur un Linux 2.6.18 (plus ancien que le vôtre) qui avait ld-2.5.so, en copiant un ld-2.15.so d'ailleurs.

REMARQUE :ne faites PAS écrasez votre système ld*.so ou ld-linux.;-/


Il est possible que votre glibc ait été construit avec le --enable-multiarch drapeau qui a forcé l'utilisation d'ifunc et de la nouvelle ABI LINUX


Linux
  1. Comment déplacer un fichier sous Linux

  2. Bases des autorisations de fichiers Linux

  3. Linux - Tout est un fichier ?

  4. Comment renommer un fichier sous Linux ?

  5. Exécuter un fichier binaire plat sous Linux

Commande Gunzip sous Linux

Commande Stat sous Linux

Qu'est-ce qu'umask sous Linux ?

Comment créer un lien symbolique vers un fichier sous Linux

Extraire le fichier tar.gz sous Linux

Qu'est-ce qu'un fichier .bashrc sous Linux ?