téléchargé et compilé glibc-2.13. quand j'essaye de lancer un exemple de programme C qui fait un malloc (). J'ai l'erreur suivante elf file OS ABI invalid
Quelqu'un peut-il s'il vous plaît passer mon pointeur utile pour résoudre ce problème.Veuillez noter que la version de mon noyau est linux-2.6.35.9
Ce n'est pas la version de votre noyau qui pose problème.
Le chargeur de votre système ne prend pas en charge la nouvelle ABI Linux
. Jusqu'à récemment, les fichiers binaires Linux ELF utilisaient l'ABI System V
. Récemment, à l'appui de STT_GNU_IFUNC, l'ABI Linux
a été ajouté. Vous devrez mettre à jour votre bibliothèque system C pour disposer d'un chargeur prenant en charge STT_GNU_IFUNC, qui reconnaîtra également les objets ELF avec le type ABI Linux
.
Voir Entrée de blog de Dave Miller sur STT_GNU_IFUNC pour Sparc pour comprendre ce que fait STT_GNU_IFUNC, si cela vous intéresse.
Il est possible que votre glibc ait été construite avec le drapeau --enable-multiarch
qui forçait à utiliser ifunc et le nouveau LINUX ABI
D'après ce que je peux dire, --enable-multiarch
est le paramètre par défaut et vous devez le désactiver en définissant --enable-multiarch=no
.
Si vous mettez vos mains dans le chargeur avec un système plus récent, vous pourrez peut-être le faire fonctionner avec cela. Mais vous devrez porter le chargeur où que votre programme aille. Vous pouvez soit compiler votre programme pour utiliser ce chargeur comme expliqué ici , ou le compiler et le corriger plus tard à l'aide de patchelf, d'une manière similaire à celle mentionnée ici . J'ai pu exécuter un programme qui me donnait l'erreur OS ABI invalid
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 ailleurs.
NOTE: NOT écrasez votre système ld * .so ou ld-linux. ; - /