Çalışma zamanında paylaşılan bir kütüphaneye bağlanan bir işlemi çalıştırdığımda (işlem başladığında bağlantılı, daha sonra bağlanmayacak şekilde dlload()), .sobaşka bir paylaşılan kütüphane ( ) dosyasını nerede arar LD_LIBRARY_PATH?
Arka fon:
Belirli bir üçüncü taraf kütüphanesini kullanan, yazdığım bazı C ++ kodlarım var. Kütüphaneyi kurdum ve kodumu hem Ubuntu hem de farklı sürümler ve farklı gcc sürümleri olmak üzere iki farklı platformda derledim. Kütüphane derlenmiş ve kaynaktan kurulmuş ve /usr/local/libher iki platformda da bulunmaktadır. Kodumu derlerken pkg-config --libs, üçüncü taraf kütüphanesinin parametrelerine bağlanır ve pkg-config --libsaynı şeyi her iki platformda da aynı şekilde döndürdüğümü doğrularım.
Kodum her iki platformda da başarıyla derleniyor ve her iki platformda LD_LIBRARY_PATHtanımlanmadı (veya boş olarak tanımlandı "":). Ancak, bir platoform üzerinde çalıştırdığımda iyi çalışıyor ve diğerinde bu hatayı alıyorum:
error while loading shared libraries: libthrift-0.9.0.so: cannot open shared object file: No such file or directory
Tuhaftır, olanları değil işi olduğunu daha yeni Ubuntu ve gcc sürümü. : /
Bu yüzden çalışan kişinin kütüphaneyi nasıl bulabildiğini bulmaya çalışıyorum, böylece bozuk olanı kütüphaneyi aynı şekilde bulmasını sağlayabiliyorum. (yani, ayar olmadan LD_LIBRARY_PATH)
Güncelleştirme:
İşte benim çıktım cat /etc/ld.so.conf.d/*
... çalışan (eski) sistemde:
/usr/lib/mesa
/usr/lib32/mesa
/usr/lib/alsa-lib
# libc default configuration
/usr/local/lib
# Multiarch support
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
... kırık (daha yeni) sistemde:
# libc default configuration
/usr/local/lib
# Multiarch support
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/mesa
/usr/local/lib/libthrift-0.9.0.soama yine de hata veriyor error while loading shared libraries: libthrift-0.9.0.so: cannot open shared object file: No such file or directory... Dizini almamasının bir nedeni var mı /etc/ld.so.conf.d/*.conf?
sudo ldconfig -vAşağıda önerildiği şekilde çalıştırmayı deneyin . Hala işe yaramazsa sorunuzu çıktıyla güncelleyin ldd /path/to/your/application.
/etc/ld.so.conf.d/*.conf, ama bundan emin değilim.