Я включал заголовок netdb.h
, где getaddrinfo
включен, но gcc выдает это предупреждение:
warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
gcc -m32 -static -s -O2 -std=c99 -D_POSIX_C_SOURCE=200112L myprogram.c
То, как я могу статически скомпилировать любой файл, отсутствует?
Возможные решения:
Могло случиться так, что glibc установка пропускает соответствующий объектный файл, необходимый для статической компиляции. Если это так, создайте соответствующий объектный файл и свяжите его при компиляции.
Попробуйте EGLIBC вместо glibc.
Я успешно скомпилировал свою программу с dietlibc, который скомпилировал без любых ошибок плюс получающийся двоичный файл, было намного меньше, чем, что делает glibc.
glibc использует libnss для поддержки ряда различных поставщиков услуг разрешения адресов. К сожалению, вы не можете статически связать libnss, поскольку именно те поставщики, которые она загружает, зависят от конфигурации локальной системы.
Я думаю, что некоторые функции зависят от динамического загрузчика для работы во время выполнения. статическая компоновка, к сожалению, больше не практична http://people.redhat.com/drepper/no_static_linking.html