Mi dilungo probabilmente un po' approssimativamente e su argomenti forse gia' noti. I programmi (come nautilus) utilizzano spesso delle funzionalita' condivise da altri programmi. Un modo per mettere a disposizione delle funzionalita' condivisibili sono le librerie dinamiche. In sostanza il programma contiene dei riferimenti alle funzionalita', e al momento del caricamento in memoria del programma, il sistema operativo carica anche le librerie da cui il programma dipende, e fa il linking dinamico delle funzionalita' che servono. Questo tipo di dipendenza e' applicabile anche alle librerie; puoi quindi avere delle funzionalita' in una libreria che dipendono da altre funzionalita' in altre librerie. Ad esempio: 1) nautilus viene lanciato 2) durante il caricamento linux cerca di risolvere una quantita' di simboli di cui nautilus necessita, tra cui 'gdk_threads_lock'. Secondo nautilus tale simbolo si trova nella libreria /usr/lib/libnautilus- private.so 3) Le librerie dinamiche vengono cercate nei path di default e in quelli elencati nella variabile d'ambiente LD_LIBRARY_PATH. 4) Viene trovata /usr/lib/libnautilus-private.so, ma 'gdk_threads_lock' non e' definito neanche qui. Secondo libnautilus-private.so tale funzione e' in '/usr/lib/libgdk-x11-2.0.so' 5) Viene caricato /usr/lib/libgdk-x11-2.0.so e viene fato il linking del simbolo. 6) Si procede per tutti gli altri simboli non definiti 7) Si lancia main dentro nautilus Due parole sui nomi delle librerie dinamiche. Una libreria "libpippo.so" normalmentre ha un numero di versione, diciamo 2.0.1. Allora il file che ospita la libreria si chiamera' "libpippo.so.2.0.1". Di solito esistono dei link simbolici che puntano a tale file, come ad esempio "libpippo.so.2" e "libpippo.so". Lo scopo dei link e' di astrarre via la versione per aumentare la genericita'. Ad esempio un programma che dipenda dalla versione 2 di libpippo.so, potra' essere dinamicamente dipendente da "libpippo.so.2", ed essere quindi indipendente dalla specifica sotto-versione che il sistema fornisce. Nel tuo caso: * libnautilus-private.so si chiama "libnautilus-private.so.2.0.0". Esiste un link simbolico alla versione 2 chiamato "/usr/lib/libnautilus-private.so.2" * libgdk-x11-2.0.so si chiama "/usr/lib/libgdk-x11-2.0.so.0.200.4". Esiste un link chiamato "libgdk-x11-2.0.so.0" Ora due note sui comandi che hai usato: * ldd elenca le dipendenze da librerie di programmi e librerie (non procede ricorsivamente). * nm elenca i simboli presenti in un file oggetto, come un libreria. Ad esempio se <libreria> fornisce la funzione 'gdk_threads_lock', questo simbolo deve comparire nell'elenco restituito da "nm <libreria>" (piu' complesso di cosi', vedi il manuale per i dettagli). Dal tuo report, sembrerebbe che "/usr/lib/libnautilus-private.so.2" dipenda da "/usr/lib/libgdk-x11-2.0.so.0" e che quest'ultima libreria non contenga "gdk_threads_lock". Se e' cosi', le gdk sono state compilate senza il supporto per il threading. $> nm /usr/lib/libgdk-x11-2.0.so.0 | grep gdk_threads_lock cosa restituisce? rob -- Per iscriversi (o disiscriversi), basta spedire un messaggio con OGGETTO "subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx