Допустим, я пытаюсь создать двоичный файл myprogram
. myprogram
включает в себя файл foo.h
, в котором объявлены некоторые функции;эти функции определены в libfoo.so
. Поэтому при сборке myprogram
я передаю libfoo.so
компоновщику ... нет, не имя "libfoo.so", а фактический файл общей библиотеки.
У меня вопрос, почему этонеобходимо? Насколько я понимаю, общая библиотека понадобится только во время выполнения, когда динамический компоновщик загрузит ее в память и исправит все ссылки на нее в myprogram
. Что делает статический компоновщик с libfoo.so
, кроме внесения его имени в список общих библиотек?