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
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).
Merci. J'ai également trouvé l'option --enable-kernel dans la glibc, ce qui permet de travailler avec les noyaux précédents.
- 1. iOS: Compilation de bibliothèques statiques
- 2. Définition de la version du fichier automatiquement après la compilation
- 3. "__aeabi_ldivmod" indéfini lors de la compilation du module noyau
- 4. erreur `missing-syscalls 'lors de la compilation du noyau
- 5. Erreur lors de la compilation du noyau: double arithmétique manquante?
- 6. Erreur lors de la compilation du noyau Linux 2.6.35
- 7. : = ou + = lors de la compilation des modules du noyau Linux?
- 8. Problème lors de la compilation des modules du noyau
- 9. Installation de la version antérieure de Django
- 10. Impossible d'importer Pycurl: "la version libcurl link-time est antérieure à la version de compilation"
- 11. Installation de la version antérieure d'Ankhsvn
- 12. iOS Application universelle: la version minimale du système d'exploitation est différente de la cible de déploiement
- 13. Comment automatiser la compilation du module noyau Linux lors de l'installation d'un nouveau noyau?
- 14. Ignorer les bibliothèques incompatibles lors de la compilation
- 15. Définition de la longueur minimale du mot de passe
- 16. Erreur lors de la compilation du module noyau C++ avec le noyau Android pour Nexus 7
- 17. Activer le code lors de la compilation de la version
- 18. Une discordance de version Lib partagée lors de la compilation?
- 19. La définition de la version SDK minimale entraîne une mauvaise exécution de l'application: manque de mémoire
- 20. Erreur de compilation de l'application iPhone avec les bibliothèques statiques sur la distribution de construction
- 21. Bibliothèques statiques
- 22. Compilation de bibliothèques TagLib 1.6.3 statiques pour Windows
- 23. Détecter la version OCaml lors de la compilation C
- 24. Option de répertoire de recouvrement lors de la compilation du noyau pour Ubuntu 10.04
- 25. Installation de la version antérieure de Zend Framework?
- 26. Problème lors de la compilation des bibliothèques Twilio C++
- 27. Port une ligne de code de la version antérieure de Mathematica à la version 8
- 28. Définition de la taille minimale et maximale d'une fenêtre
- 29. La version minimale du système d'exploitation est incorrecte
- 30. Got erreur: Aucune règle pour faire la cible lors de la compilation du noyau Linux