En fait, -statique de la gcc drapeau sur Linux ne fonctionne pas aujourd'hui. Permettez-moi de citer de la GNU libc FAQ:
2.22. Même lié statiquement les programmes ont besoin de certaines bibliothèques partagées ce qui n'est pas acceptable pour moi. Ce puis-je faire?
{AJ} NSS (pour plus de détails tapez simplement `info libc "Name Service Switch"') ne sont pas travail correctement sans partagée des bibliothèques. NSS permet l'utilisation de différents services (par exemple, NIS, fichiers, db, hésiode) en changeant juste une configuration le fichier/etc/nsswitch.conf) sans re-lier tous les programmes. La seule l'inconvénient est que maintenant statique les bibliothèques ont besoin de l'accès partagé des bibliothèques. C'est géré de manière transparente par la bibliothèque C de GNU.
Une solution est de configurer la glibc avec --enable-static-nss. Dans ce cas, vous pouvez créer un binaire statique qui utiliser uniquement les services dns et les fichiers (changer /etc/nsswitch.conf pour cela). Vous avez besoin de relier explicitement contre l'ensemble de ces services. Par exemple:
gcc -static test-netdb.c -o test-netdb \ -Wl,--start-group -lc -lnss_files -lnss_dns -lresolv -Wl,--end-group
Le problème avec cette approche est que vous avez obtenu pour chaque lien statique programme qui utilise NSS routines avec toutes ces bibliothèques.
{UD} En fait, on ne peut pas en dire plus, qu'une libc compilé avec cette option est l'aide de NSS. Il n'y a pas d'interrupteur plus. Par conséquent, il est très recommandé de ne pas utiliser --enable-static-nss car cela rend le comportement des programmes sur l' système incohérent.
Concernant ce fait est-il raisonnable de façon à créer un plein fonctionnement de l'accumulation d'électricité statique sur Linux ou sur la liaison statique est complètement morte sur Linux? Je veux dire l'accumulation d'électricité statique qui:
- Se comporte exactement de la même manière que dynamique de construire n' (statique-nss avec comportement incohérent est le mal!);
- Travaux sur les variations de la glibc de l'environnement et de versions de Linux;