2009-07-07 9 views
3

Warum benötigt meine statische Erstellung gemeinsame Bibliotheken? ‚Funktion‘ Mit in statisch gelinkte Anwendungen “:Warum benötigt meine statische Erstellung gemeinsame Bibliotheken?

Jeden so oft ich diese Warnungen von meinem Linker erhalten ... (zur Zeit mit OpenSSH-5.2p1 es geschieht)

Die Warnungen ähneln benötigt zur Laufzeit die shared libraries aus der glibc-Version für ... "

Wenn ich google, sehe ich nur Fixes, keine Gründe.

Danke, Chenz

Antwort

3

Es spielt keine Libs per se geteilt erfordern, es warnt Sie nur, dass einige Dinge nicht ordnungsgemäß funktionieren, wenn Sie statisch auf glibc verknüpfen.

Einige dieser Dinge sind der NSSWITCH, siehe z.B. /etc/nsswitch.conf. Auf einem System können verschiedene Arten nachzuschauen Benutzer/Gruppen/Hostnamen und andere Dinge über Plugins konfiguriert und verändert werden - z.B. Samba kommt mit einem Modul zur Verwaltung von Benutzern, die auf einer Windows-Domäne/einem Active Directory konfiguriert sind, transparent.

Ihre App wird die /etc/nsswitch.conf-Anpassung nicht berücksichtigen, wenn Sie statisch mit glibc arbeiten, Funktionen wie gethostbyname, getpwuid und andere verwenden nur die Standardmethoden zum Nachschlagen.

Gleiches gilt z.B. andere Bibliotheken, die Ihre App aus irgendeinem Grund verwenden könnte dlopen() s, um sich in glibc oder ähnlichem einzuloggen.

Siehe auch

Statically linking considered harmful

Verwandte Themen