web-dev-qa-db-fra.com

Comment créer un binaire statique qui s'exécute sur chaque distribution?

Certaines applications Linux comme supertuxkart ou regnum online ont des binaires statiques qui, après le téléchargement, fonctionnent sans avoir besoin d'installer de bibliothèque partagée. Sur chaque distribution. Comment puis-je créer une telle application?

18
user1873947

Assurez-vous que toutes vos ressources sont contenues dans l'exécutable et liez l'exécutable de manière statique:

gcc -o foo main.o -static -lbaz -lbar

Cependant, cela présente également des inconvénients. Recherchez des liens dynamiques.

18
thiton

@ user1873947, l'outil "ldd" vous indique pour dynamic bibliothèques les dépendances d'une bibliothèque sur d'autres, mais pas pour statique bibliothèques. Pour les bibliothèques statique, regardez l'outil "nm" pour vous donner des noms de symboles ("noms de fonctions") qui n'ont pas pu être résolus. Plus tard, vous serez peut-être intéressé par l'outil "objdump". Si vous ne savez pas immédiatement de quelle bibliothèque provient une fonction manquante, vérifiez si vous trouvez la fonction déclarée dans/usr/include quelque part. Vous faites cela avec l'outil "grep" - mais omettez un "_" au début des noms de symboles. Le fichier qui le déclare provient généralement d'un package -dev qui contient également le fichier .a correspondant.

0
smoe