Спільні бібліотеки: DLL і .so
Коротко: Спільні бібліотеки (DLL у Windows, .so у Linux, .dylib у macOS) завантажуються в програму під час запуску або виконання й використовуються багатьма програмами спільно.
Докладніше: Протилежність — статичне компонування, за якого код бібліотеки копіюється у виконуваний файл.
Подробиці
- Переваги спільних бібліотек: Менше пам’яті (код лежить в ОЗП один раз), виправлення без перезбирання програм, менші файли.
- Недоліки: «DLL-пекло» за конфлікту версій, програма не запускається, якщо бібліотеки немає (
libfoo.so: cannot open shared object file). - Пошук: Динамічний завантажувач шукає за заданими шляхами. У Linux:
LD_LIBRARY_PATH,/etc/ld.so.conf, вшитийRPATH. У Windows спершу в теці програми. - Інструменти:
ldd програма(Linux) показує залежності,otool -Lу macOS, Dependencies/dumpbinу Windows. - Статична проти динамічної: Статично скомпоновані програми (Go, типово Rust) легко постачати, динамічні простіше оновлювати.
- Безпека: Підкинута бібліотека в шляху пошуку — відомий шлях атаки (DLL hijacking).
Див. також: залежності та бібліотеки