Linux liaison statique est mort?

En fait, -statique 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é 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;
  • N'a pas d'autre remplacement de la bibliothèque C convenir à votre but? (alimentation / uclibc / etc) ?
  • Utilisent-ils NSS? Le plus probable, le comportement vais être incompatibles, car je doute que ces bibliothèques prendre en compte NSS.
  • Ne vous utilisez toutes les fonctions qui finalement se termine par l'appel à nss (par exemple gethostname/getpwname/getgroups/etc.) ?
  • Assurez -)) C'est une application client/serveur.
  • Est-ce toujours le cas ou les choses ont changé depuis 2010?
  • découvrez static linux

InformationsquelleAutor Shcheklein | 2010-08-07