dlopen non riesce con file non trovato quando il file è in percorso corretto
Domanda
Ho una biblioteca costruita con libtool, che è installare nella directory biblioteca del pacchetto, /usr/local/lib/myprog/libmylib.so
. Sto dinamicamente il caricamento della libreria nel mio codice con libltdl. Quando provo a caricare questa libreria su una macchina, funziona bene. Su un altro, con la stessa corporatura e la biblioteca installato sulla stessa posizione, ho un "file not found" errore.
Se chiamo lt_dlforeachfile
direttamente prima lt_dlopenext
(che io uso per caricare la libreria), allora posso vedere stampando nomi di file che l'ho bisogno della libreria è stato trovato nel percorso di ricerca. Ma poi subito dopo, il caricamento non riesce con un "file non trovato" errore. Qualche suggerimento?
Aggiorna
Ho cercato di passare a utilizzare dlopen
e specificando esplicitamente il percorso assoluto alla libreria. Questo funziona ancora in alcuni sistemi e non sull'altro.
Soluzione
Si è scoperto che libltdl si nascondeva il vero errore. "file not found" era da un'altra libreria che la libreria ero carico dipendeva. Ho scoperto questo quando si utilizza dlerror()
per stampare i messaggi di errore. Dopo aver installato la libreria mancante, va tutto bene!