2010-12-22 5 views
2

Ma distribution (Arch Linux) a récemment augmenté la version minimale du noyau Linux prise en charge pour sa chaîne d'outils. Je compile une application Web que je lie statiquement puis je télécharge sur un serveur Web, et la version du noyau sur le serveur web est trop ancienne pour les bibliothèques statiques compilées avec la nouvelle chaîne d'outils. (J'obtiens une erreur de segmentation lorsque j'essaie d'exécuter des binaires statiques sur le serveur.) Existe-t-il un moyen de compiler des applications utilisant la chaîne d'outils GNU (GCC, binutils, glibc)?Définition de la version antérieure minimale du noyau lors de la compilation de bibliothèques statiques

Répondre

1

La compatibilité Glibc n'est vraiment garantie que dans un seul sens. (Les anciens binaires fonctionnent sur les systèmes plus récents, et vice versa, pas nécessairement.)

Pour garantir que vos binaires fonctionnent sur des systèmes plus anciens, compilez les liens avec une ancienne glibc. La façon la plus simple de le faire est de trouver une distribution plus ancienne, mais je recommande de configurer un "crosstool" ou une chaîne de compilation croisée similaire ciblant une libc différente de celle utilisée par votre système de construction (ce qui permet des constructions répétitives sur des hôtes indépendamment de quel est le système).

0

Merci. J'ai également trouvé l'option --enable-kernel dans la glibc, ce qui permet de travailler avec les noyaux précédents.

Questions connexes