Являются ли файлы библиотеки, соответствующие stdio.h, динамически связанными или статически связанными? - PullRequest
0 голосов
/ 04 мая 2018

Я имею в виду, что математическая библиотека динамически связана. Итак, я подумал, что библиотечные файлы, соответствующие stdio.h (коды printf и scanf), динамически связаны? Также, когда мы включаем stdio.h, все объявленные в нем функции добавляются во время выполнения или только те функции, которые используются?

1 Ответ

0 голосов
/ 04 мая 2018

В Linux и многих других * nix системах вы обычно связываете стандартную библиотеку C динамически, по умолчанию это gcc и clang. Но вы все еще можете делать статические ссылки, если хотите. Это полностью зависит от вашей системы, среды, набора инструментов и личных настроек.

Также, когда мы включаем stdio.h, тогда все объявленные в нем функции добавляются во время выполнения или только те функции, которые используются?

Включение заголовка ничего не связывает. Стандартная библиотека C связывается автоматически компиляторами C, в противном случае вы получите неопределенные ошибки ссылок на этапе компоновки, если вы используете функции, которые объявлены, например, в. stdio.h.

Тем не менее, при динамическом связывании вся библиотека загружается во время выполнения, когда это требуется динамическому компоновщику - нет способа загрузить отдельные функции. Преимущество динамического связывания заключается в том, что ОС требуется только одна копия этой библиотеки, независимо от того, сколько процессов ссылаются на нее. Библиотека может быть отображена в адресное пространство каждого процесса, в котором она нуждается. Это экономит оперативную память во время выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...