Program aracılığıyla, paylaşılan nesneler için dlopen() tarafından hangi yolların arandığını öğrenmenin bir yolu var mı? Ben her zaman dlopen() 'in sadece/lib ve/usr/lib dizinlerine bakacağını düşünürdüm ama şimdi Linux Mint'te libglib-2.0.so gibi bazı temel bileşenlerin tamamen farklı bir klasörde olduğunu gördüm:/rofs/lib/i386-gnu-linux ve diğerleri. Dlopen() öğesinin paylaşılan bir nesne için arayacağı tüm bu yolları tanımanın bir yolu var mı? LD_LIBRARY_PATH ortam değişkenini zaten kontrol ettim, ancak hiç tanımlanmadı.dlopen() arama yolu
5
A
cevap
7
ldconfig
adam sayfasına bir göz atın ve dosya: /etc/ld.so.conf
ld.so.conf
ipucu ek olarak
2
:
Belirli bir kütüphane dlopen
-ed, dlopen
yolunu geçmesi olmasını sağlamak istiyorsanız , Örneğin dlopen("/some/path/to/lib.so", RTLD_LOCAL)
veya belki dlopen("./lib.so", RTLD_LOCAL)
, ancak dlopen("lib.so", RTLD_LOCAL)