Ben yerleştirilen bağlı bir kütüphane (libz.so.1.2.7) gerektiren "alfa" adlı bir ikili yürütülebilir dosya var /home/username/myproduct/lib/libz.so.1.2.7
Aşağıdaki komutu yürüterek ikili çalıştırılabilir dosyamı yumurtlamadan önce terminal örneğime de aktarıyorum.
export LD_LIBRARY_PATH=/home/username/myproduct/lib/:$LD_LIBRARY_PATH
Şimdi, aynı kütüphane gerektiren ancak farklı bir sürümü, yani (libz.so.1.2.8) kullanılabilir başka bir uygulama "bravo" doğurduğunda
/lib/x86_64-linux-gnu/libz.so.1.2.8, sistem aşağıdaki hatayı atar.
version `ZLIB_1.2.3.3' not found (required by /usr/lib/x86_64-linux-gnu/libxml2.so.2)
Ayarlamayı LD_LIBRARY_PATHkaldırırsam, "bravo" iyi çalışır. Yukarıdaki davranış, bağlantılı kütüphaneleri ararken LD_LIBRARY_PATHtanımlanmış dizin yolları üzerinde öncelikli olduğundan /etc/ld.so.confve sonuç olarak yukarıdaki hata oluştuğunu anlıyorum . Sadece UNIX / LINUX geliştiricilerinin işletim sistemini neden farklı dizinlerdeki hiyerarşiye göre diğer dizinlerdeki bağlantılı kütüphaneleri aramak için tasarlamadığını merak ediyorum.
Basitçe söylemek gerekirse, UNIX / LINUX sistemleri gerekli kütüphaneyi bulana kadar bir dizi dizinde dolaşır. Ancak, sürümüne bakılmaksızın ilk kütüphane örneğini kabul etmek yerine beklenen sürümü bulana kadar neden aynı şeyi yapmıyor?
libz.so.1bir symlink olduğunulibz.so.1.2.8