EMZETT.
Giriş yap

Paylaşımlı kütüphaneler: DLL ve .so

Kısaca: Paylaşımlı kütüphaneler (Windows’ta DLL, Linux’ta .so, macOS’ta .dylib) başlangıçta veya çalışma zamanında programa yüklenir ve birçok program tarafından paylaşılır.

Biraz daha ayrıntılı: Karşıtı, kütüphane kodunun çalıştırılabilir dosyaya kopyalandığı statik bağlamadır.

Ayrıntılı

  • Paylaşımlı kütüphanelerin avantajları: Daha az bellek (kod RAM’de yalnızca bir kez durur), programları yeniden derlemeden düzeltmeler, daha küçük dosyalar.
  • Dezavantajlar: Sürüm çatışmalarında “DLL cehennemi”, kütüphane eksikse program başlamaz (libfoo.so: cannot open shared object file).
  • Arama: Dinamik yükleyici sabit yollarda arar. Linux’ta: LD_LIBRARY_PATH, /etc/ld.so.conf, gömülü RPATH. Windows’ta önce program klasörü.
  • Araçlar: ldd program (Linux) bağımlılıkları gösterir, macOS’ta otool -L, Windows’ta Dependencies/dumpbin.
  • Statik ve dinamik: Statik bağlanmış programlar (Go, Rust varsayılanı) kolay dağıtılır, dinamik olanlar daha kolay güncellenir.
  • Güvenlik: Arama yoluna sokulmuş bir kütüphane bilinen bir saldırı yoludur (DLL hijacking).

Ayrıca bak: Bağımlılıklar ve kütüphaneler