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