Utilizzare il ldd comando per mostrare le librerie condivise richieste da un dato programma - utile per lavorare quando c'è una dipendenza mancante. Il comando elenca anche funzioni e oggetti mancanti.
Sintassi del comando ldd
Osservare la sintassi corretta per il comando ldd per evitare errori:
ldd OPTION … FILE …
Utilizzare uno o più degli interruttori di comando ldd disponibili, inseriti nel OPZIONE individuare nel comando precedente: --help | stampa questo aiuto ed esci --version | stampa informazioni sulla versione ed esce -d, --data-relocs | elaborare i trasferimenti di dati -r, --function-relocs | elaborare dati e riposizionamenti di funzioni -u, --unused | stampa dipendenze dirette non utilizzate -v, --verbose | stampare tutte le informazioni Esegui il seguente comando per ottenere ulteriori informazioni su un programma: $ ldd -v / percorso / a / programma / eseguibile
L'output mostra le informazioni sulla versione, nonché i percorsi e gli indirizzi alle librerie condivise, come questo: $ ldd libshared.so linux-vdso.so.1 => (0x00007fff26ac8000) libc.so.6 => /lib/libc.so.6 0x00007ff1df55a000) /lib64/ld-linux-x86-64.so.2 (0x00007ff1dfafe000)
Se il file SO non esiste affatto, puoi trovare le librerie mancanti usando il seguente comando: $ ldd -d percorso / a / programma
L'output è simile al seguente: linux-vdso.so.1 (0x00007ffc2936b000) /home/gary/demo/garylib.so => non foundlibc.so.6 => usr / lib / libc.so.6 (0x00007fd0c6259000) /lib64/ld-linux-x86-64.so.2 (0x00007fd0c65fd000)
Non eseguire mai il comando ldd su un programma non attendibile perché il ldd potrebbe effettivamente eseguirlo. Invece, utilizzare un'alternativa più sicura che mostra solo le dipendenze dirette e non l'intero albero delle dipendenze: $ objdump -p / percorso / per / programma | grep NECESSARIO Devi fornire il percorso completo a un'applicazione se vuoi trovare le sue dipendenze con ldd, cosa che puoi fare in diversi modi. Ad esempio, questo è il modo in cui troverai il percorso per Firefox: $ find / -name firefox
Il problema con il comando find, tuttavia, è che non solo elencherà l'eseguibile ma ovunque si trovi Firefox, come questo: Questo approccio è un po 'eccessivo e potrebbe essere necessario utilizzare il comando sudo per elevare i privilegi, altrimenti è probabile che si verifichino molti errori di autorizzazione negati. È invece molto più facile usare il comando whereis per trovare il percorso di un'applicazione: $ whereis firefox
Questa volta l'output potrebbe essere simile a questo: / Usr / bin / firefox / Etc / firefox / Usr / lib / firefox Tutto quello che devi fare ora per trovare le librerie condivise per Firefox è digitare il seguente comando: $ ldd / usr / bin / firefox
L'output del comando sarà qualcosa del genere: linux-vdso.so.1 (0x00007ffff8364000)libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007feb9917a000)libdl.so.2 => /usr/lib/libdl.so.2 (0x00007feb98f76000)libstdc ++. so.6 => /usr/lib/libstdc++.so.6 (0x00007feb98bf4000)libm.so.6 => /usr/lib/libm.so.6 (0x00007feb988f6000)libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007feb986e0000)libc.so.6 => /usr/lib/libc.so.6 (0x00007feb9833c000)/lib64/ld-linux-x86-64.so.2 (0x00007feb99397000) Linux-vdso.so.1 è il nome della libreria e il numero esadecimale è l'indirizzo in cui la libreria verrà caricata in memoria. Noterai su molte delle altre linee che il simbolo => è seguito da un percorso. Questo è il percorso per il binario fisico; il numero esadecimale è l'indirizzo in cui verrà caricata la libreria. Come usare il comando ldd
Come trovare il percorso per un'applicazione