Comment puis-je corriger une “version " GLIBC_2.14' pas trouvé d'erreur”?
J'ai compilé un programme C sous Ubuntu 12.04, construit un paquet Debian à partir d'elle, et que vous voulez l'installer sur un serveur sous Debian Lenny.
Dernière fois que je l'ai fait (environ deux mois), il a travaillé: j'ai pu installer le package et exécuter le binaire. Mais maintenant, je reçois le message d'erreur suivant:
(binary's name): /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by (binary's name))
Autres que la mise à niveau de ma machine à Ubuntu 12.4, le seul changement que nous avons apporté à ce code est un appel à strdup()
, pour laquelle j'ai dû activer le _POSIX_C_SOURCE=200809L
macros de test de fonctionnalité.
Le serveur mis à niveau vers la dernière version de Debian n'est pas mon option privilégiée, car elle n'est pas sous mon contrôle direct.
Comment puis-je résoudre ce problème?
OriginalL'auteur lindelof | 2012-05-31
Vous devez vous connecter pour publier un commentaire.
Je pense que la critique peu d'info ici est "mise à jour de mon ordinateur'. Alors, quand cela a fonctionné avant, vous avez été la construction et de l'emballage sur quelque chose plus tôt que la 12.04? Si oui, alors le problème est que la 12.04 est maintenant livré avec une nouvelle version de la libc (apparemment 2.14), et votre binaire enregistre désormais une dépendance sur cette version de la libc. Lorsque vous essayez d'exécuter sur Lenny, qui utilise probablement une ancienne version de la libc, l'éditeur de liens détecte que la version Lenny ne prend pas en charge les 2.14 API, et échoue.
Je pense que la meilleure façon de progresser est probablement à faire de votre développement et l'essai sur la 12.04, et puis quand vous le souhaitez pour créer des packages pour une version de Debian, utilisez pbuilder ou similaire pour créer debs. Cela permettra d'assurer que les bibliothèques utilisées pour l'emballage de construire match de la plate-forme cible.
OriginalL'auteur acm