2009-10-23 12 views
10

Come trovare il nome file di una libreria tramite il nome della libreria?Come si trova il nome file di una libreria tramite il nome della libreria?

In altre parole, quando uso "-lc", so che è /lib/libc.so.6 (o qualcosa di simile). Voglio essere in grado di digitare qualche comando dove "-lc" è l'input e "/lib/libc.so.6" è l'output. Per estendere questa idea futher, ho voluto indicare il mio percorso di ricerca in modo da poter utilizzare questo resolver libreria per diversi toolchain ... Qualsiasi aiuto sarebbe impressionante,

Grazie chenz

risposta

8

Se si vuole scoprire dove un dato GCC troverà libc.a o libc.so, fare questo:

gcc --print-file-name=libc.a 
gcc --print-file-name=libc.so 
.210

La ragione -lc traduce in libc.so.6 è un po 'complicato: per glibc, libc.so è uno script del linker, che contiene di solito:

/* GNU ld script 
    Use the shared library, but some functions are only in 
    the static library, so try that secondarily. */ 
OUTPUT_FORMAT(elf32-i386) 
GROUP (/lib/libc.so.6 /usr/lib/libc_nonshared.a AS_NEEDED (/lib/ld-linux.so.2)) 

o qualcosa di simile.

4

gcc -Wl, - traccia file.c

stamperà l'elenco di file di input per ld

Problemi correlati