En général, les systèmes UNIX prennent en charge la rétrocompatibilité binaire (un binaire créé sur une ancienne machine continue de s'exécuter sur une machine plus récente), mais pas l'inverse. Vous ne pouvez pas vous attendre à ce qu'un binaire construit sur un nouveau système s'exécute sur un ancien. STT_GNU_IFUNC
n'est que le premier de nombreux problèmes que vous rencontrerez.
Si vous avez besoin de construire un binaire sur une machine plus récente qui fonctionnera sur une ancienne, consultez ce document.
Il y avait autrefois "apgcc :un wrapper GCC pour créer des binaires portables" qui facilitait cela (il est référencé ci-dessus), mais il semble avoir disparu ;-(
L'option la plus simple est de construire sur une ancienne machine (j'avais l'habitude de construire sur RedHat 6.2, et le binaire résultant fonctionnait partout ). Vous n'avez pas besoin d'exécuter RH-6.2 sur une machine physique, il suffit de l'afficher dans une machine virtuelle.
L'autre option relativement simple consiste à intégrer un chroot
, en utilisant à nouveau des outils et des bibliothèques d'une ancienne distribution (par exemple, RH-6.2).
Comme APGCC ne semble plus disponible (sauf peut-être ici et ici). Ces en-têtes glibc semblent être actuellement le moyen le plus pratique de générer des binaires Linux portables à partir d'un code C en incluant l'un des anciens fichiers d'en-tête.