2009-10-23 11 views
10

Comment trouver le nom de fichier d'une bibliothèque via le nom de la bibliothèque? En d'autres termes, quand j'utilise "-lc", je sais que c'est /lib/libc.so.6 (ou quelque chose de similaire.) Je veux être capable de taper une commande où "-lc" est l'entrée et "/lib/libc.so.6" est la sortie. Pour étendre cette futher idée, je voulais préciser mon propre chemin de recherche pour que je puisse utiliser ce résolveur de la bibliothèque pour les différents toolchains ... Toute aide serait génial,Comment trouver le nom de fichier d'une bibliothèque via le nom de la bibliothèque?

Merci CHENZ

Répondre

8

Si vous voulez savoir où un GCC donné trouvera libc.a ou libc.so, faites ceci:

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

La raison -lc se traduit libc.so.6 est un peu compliquée: pour glibc, libc.so est un script de liaison, qui contient habituellement:

/* 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)) 

ou quelque chose de similaire.

4

-Wl gcc, - trace file.c

imprime la liste des fichiers d'entrée pour ld