gcc: Réduire la version requise de libc
Je suis en train de lancer un nouveau binaire compilé sur certaines un peu vieux 32bits distribution RedHat.
Le binaire est compilé en C (pas de++) sur un CentOS 32bits VM en cours d'exécution de la libc v2.12.
RedHat se plaint de la version de la libc:
error while loading shared libraries: nécessite de la glibc 2.5 ou plus tard, l'éditeur de liens dynamiques
Depuis mon programme est assez simpliste, Il n'est probablement pas à l'aide de quelque chose de nouveau à partir de la libc.
Est-il un moyen de réduire version de la libc exigence
source d'informationauteur MonoThreaded
Vous devez vous connecter pour publier un commentaire.
Non testé solution possible
J'ai déjà eu le même problème, essayez de compiler un petit outil (je l'ai écrit) pour une vieille machine pour laquelle je n'avais pas de compilateur. J'ai compilé sur une mise à jour de la machine, et le binaire requis au moins GLIBC 2.14 pour exécuter la commande.
En faisant un dump de la binaire (avec xxd), j'ai trouvé ceci :
Je l'ai donc remplacé le memcpy appels dans mon code par un appel à un home-made memcpy, et la dépendance avec la glibc 2.14 comme par magie disparu.
Je suis désolé, je ne peux pas vraiment expliquer pourquoi ça a marché, je ne peux pas expliquer pourquoi il n'a pas de travail avant la modification.
Espère que ça a aidé !
Ok, alors, essayer de trouver un équilibre entre l'élégance et de la force brute, j'ai téléchargé un VM correspondant à la cible noyau version, d'où la fixation de la bibliothèque de questions.
L'ensemble de la chose (téléchargement + yum install gcc) a pris moins de 30 minutes.
Références: Les machines virtuelles, La Version Du Noyau Table De Mappage