Создайте статически связанный двоичный файл, который использует getaddrinfo?

Я включал заголовок 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

То, как я могу статически скомпилировать любой файл, отсутствует?

Возможные решения:

  1. Могло случиться так, что glibc установка пропускает соответствующий объектный файл, необходимый для статической компиляции. Если это так, создайте соответствующий объектный файл и свяжите его при компиляции.

  2. Попробуйте EGLIBC вместо glibc.

  3. Я успешно скомпилировал свою программу с dietlibc, который скомпилировал без любых ошибок плюс получающийся двоичный файл, было намного меньше, чем, что делает glibc.

28
задан Ralf Stubner 24 July 2018 в 07:28
поделиться

2 ответа

glibc использует libnss для поддержки ряда различных поставщиков услуг разрешения адресов. К сожалению, вы не можете статически связать libnss, поскольку именно те поставщики, которые она загружает, зависят от конфигурации локальной системы.

21
ответ дан 28 November 2019 в 03:46
поделиться

Я думаю, что некоторые функции зависят от динамического загрузчика для работы во время выполнения. статическая компоновка, к сожалению, больше не практична http://people.redhat.com/drepper/no_static_linking.html

2
ответ дан 28 November 2019 в 03:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: