Статична та динамічна зв'язок
Існує два типи бінарних виконуваних файлів: статично пов'язані та динамічно пов'язані. Спочатку про статично пов'язані між собою : Коли програма хоче викликати функцію бібліотеки, вона посилається на неї по імені. При побудові програми з джерела всі функції бібліотеки, що використовуються в програмі, копіюються з бібліотеки в програму. Потім програма містить власний код, а також код функцій бібліотеки, яку вона використовує. Потім в місцях виклику ім'я змінюється на адресу відповідної функції в програмі. Цей процес називається зв'язуванням, оскільки він пов'язує назву функції з самою функцією, її реалізацію. Це називається статичним , оскільки посилання неможливо змінити після побудови програми.
Динамічно пов'язані програми працюють по-різному: програма також посилається на бібліотечні функції за назвою. При побудові програми збираються та зберігаються разом із програмою два списки: список функцій бібліотеки, в яких місцях використовується, та список бібліотек, які містять функції, які використовує програма. Це все для побудови програми.
Пізніше, під час виконання , спеціальна програма-помічник, так званий динамічний лінкер, шукає у певних місцях файлової системи для кожної бібліотеки зі списку бібліотек і завантажує її в пам'ять. Тепер динамічний лінкер знає, за якими адресами пам'яті доступні функції бібліотеки. Він використовує перший список, щоб записати правильну адресу у всіх місцях, які викликають функції бібліотеки. Тоді динамічно пов'язану програму можна запустити.