EMZETT.
Увійти

Спільні бібліотеки: 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).

Див. також: залежності та бібліотеки