2009-07-07 3 views
3

Почему моя статическая сборка требует общих библиотек?Почему моя статическая сборка требует общих библиотек?

Каждый так часто я получаю эти предупреждения от моего линкера ... (в настоящее время это происходит с OpenSSH-5.2p1)

Предупреждений выглядеть примерно так: «Использование„функции“в статически связанных приложений требует во время выполнения разделяемых библиотек из версии glibc, используемой для ... »

Когда я google, я вижу только исправления, а не причины.

Спасибо, Chenz

ответ

3

Это не требует разделяемых библиотек самих по себе, он просто предупреждает, что некоторые вещи могут не работать должным образом, если вы связываете статически Glibc.

Некоторые из этих вещей - это nsswitch, см., Например, /etc/nsswitch.conf. В системе различные способы поиска пользователей/групп/имен хостов и других вещей могут быть настроены и изменены через плагины - например. samba поставляется с модулем для прозрачного управления пользователями, настроенными в домене Windows/активном каталоге.

Ваше приложение не будет соблюдать настройку /etc/nsswitch.conf, если вы связываете статически с glibc, такие функции, как gethostbyname, getpwuid и другие, будут использовать только способы поиска по умолчанию.

То же относится, например. другие библиотеки, которые могут использовать ваше приложение, по какой-либо причине сам dlopen() сам подключается к glibc или тому подобное.

Смотрите также

Statically linking considered harmful

Смежные вопросы