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’taotool -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