Domanda Linkaggio librerie a run time

zouth

Utente Silver
16 Dicembre 2020
82
36
4
61
Ciao a tutti,

Ho appena compilato e linkato un programma con successo, il problema e' che l'eseguibile per trovare i files .so (in questo caso di SFML) necessari per l'esecuzione va a cercare solo all'interno delle directories listate in una variabile d'ambiete chiamata LD_LIBRARY_PATH quando io voglio che li vada a cercare (esclusivamente se possibile) nella directory stessa dell'eseguibile.

Non so se mi sono spiegato bene, in ogni caso grazie in anticipo.
 
La policy di dove andare a cercare le librerie dinamiche dipende dal sistema operativo. Su linux è tutto scritto nella manpage di ld.so. Cito la parte che ti interessa:
When resolving library dependencies, the dynamic linker first inspects each dependency string to see if it contains a slash (this can occur if a library pathname containing slashes was specified at link time). If a slash is found, then the dependency string is interpreted as a (relative or absolute) pathname, and the library is loaded using that pathname.

If a library dependency does not contain a slash, then it is searched for in the following order:
...

Quando compili, usa -Wl,-rpath,./. Meglio ancora se lasci tutto com'è di default e installi la libreria sul sistema.
 
  • Mi piace
Reazioni: DanyDollaro