2009-07-07 7 views
3

Pourquoi ma génération statique nécessite-t-elle des bibliothèques partagées?Pourquoi ma construction statique nécessite-t-elle des bibliothèques partagées?

si souvent je Chaque obtenir ces avertissements de mon éditeur de liens ... (au moment où il se passe avec OpenSSH-5.2p1)

Les avertissements se ressemblent à: « Utilisation de « fonction » dans les applications liées statiquement nécessite à l'exécution les bibliothèques partagées de la version glibc utilisée pour ... "

Quand je google, je ne vois que des correctifs, pas des raisons.

Merci, Chenz

Répondre

3

Il ne nécessite pas partagé libs en tant que tel, il vous avertit simplement que certaines choses pourraient ne pas fonctionner correctement si vous liez statiquement à glibc.

Certaines de ces choses sont les nsswitch, voir par ex. /etc/nsswitch.conf. Sur un système, différentes manières de rechercher des utilisateurs/groupes/noms d'hôtes et d'autres choses peuvent être configurées et modifiées via des plugins - par ex. samba est livré avec un module pour gérer les utilisateurs configurés sur un domaine Windows/répertoire actif de manière transparente. Votre application n'honore pas la personnalisation de /etc/nsswitch.conf si vous liez statiquement à la glibc, des fonctions telles que gethostbyname, getpwuid et d'autres utiliseront simplement les méthodes par défaut pour rechercher des choses.

Il en va de même, par ex. D'autres bibliothèques que votre application pourrait utiliser pour une raison quelconque, dlopen() elle-même pour se brancher sur glibc ou similaire.

Voir aussi

Statically linking considered harmful