2011-11-19 3 views
5

c'è un modo per scoprire a livello di programmazione quali percorsi vengono cercati da dlopen() per oggetti condivisi? Ho sempre pensato che dlopen() avrebbe solo cercato in/lib e/usr/lib ma ora ho visto che su Linux Mint diversi componenti di base come libglib-2.0.so si trovano in una cartella completamente diversa, ovvero in/rofs/lib/i386-gnu-linux e alcuni altri. C'è un modo per conoscere tutti questi percorsi che dlopen() cercherà per un oggetto condiviso? Ho già controllato la variabile di ambiente LD_LIBRARY_PATH ma non è stata definita affatto.dlopen() percorso di ricerca

risposta

7

un'occhiata alla pagina ldconfig uomo, e il file: /etc/ld.so.conf

2

In aggiunta del ld.so.conf suggerimento:

Se si vuole garantire che una libreria specifica è dlopen -ed, passare un percorso per dlopen , per esempio dlopen("/some/path/to/lib.so", RTLD_LOCAL) o forse dlopen("./lib.so", RTLD_LOCAL) ma non dlopen("lib.so", RTLD_LOCAL)