На самом деле - статический флаг gcc на Linux не работает теперь. Позвольте мне процитировать из GNU libc FAQ:
2.22. Даже для статически связанных программ нужны некоторые общие библиотеки, который не приемлем для меня. Что я могу сделать?
{AJ} NSS (для деталей просто вводят 'информацию libc "служба имен Переключатель"') не будет работать правильно без общих библиотек. NSS позволяет использовать различные сервисы (например, NIS, файлы, дб, hesiod), просто изменив один конфигурационный файл (/etc/nsswitch.conf), не повторно связывая программ. Единственный недостаток - то, что теперь статические библиотеки должны получить доступ к совместно использованным библиотекам. Это обрабатывается прозрачно библиотекой GNU C.
Решение состоит в том, чтобы настроить glibc с - enable-static-nss. В этом случае можно создать статический двоичный файл, который будет использовать только сервисы DNS, и файлы (измените/etc/nsswitch.conf для этого). Необходимо связаться явно против всех этих сервисов. Например:
gcc -static test-netdb.c -o test-netdb \ -Wl,--start-group -lc -lnss_files -lnss_dns -lresolv -Wl,--end-group
Проблема с этим подходом состоит в том, что необходимо связать каждую статическую программу, которая использует стандартные программы NSS со всеми теми библиотеками.
{UD} На самом деле, нельзя больше говорить, что libc, скомпилированный с этой опцией, использует NSS. Больше нет никакого переключателя. Поэтому это настоятельно рекомендовано для не использования - enable-static-nss, так как это делает поведение программ в системе непоследовательным.
Касающийся, что факт является там каким-либо разумным путем теперь для создания полно функционирующей статической сборки на Linux или статическом подключении, абсолютно мертво на Linux? Я имею в виду статическую сборку который:
Статическое подключение вернулось повышающееся!
pkgsStatic
, набор пакета может обеспечить все виды статически связанных исполняемых файлов).