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