Comment trouver le nom de fichier d'une bibliothèque via le nom de la bibliothèque?
-
06-07-2019 - |
Question
Comment trouver le nom de fichier d'une bibliothèque via son nom?
En d'autres termes, lorsque j'utilise "-lc", je sais que c'est /lib/libc.so.6 (ou quelque chose de similaire.) Je souhaite pouvoir taper une commande où "-lc". est l'entrée et "/lib/libc.so.6" est la sortie. Pour étendre cette idée, je voulais spécifier mon propre chemin de recherche afin de pouvoir utiliser ce résolveur de bibliothèque pour différentes chaînes d'outils ... Toute aide serait géniale,
Merci Chenz
La solution
Si vous voulez savoir où un GCC va trouver libc.a ou libc.so, procédez comme suit:
gcc --print-file-name=libc.a
gcc --print-file-name=libc.so
La raison pour laquelle -lc
est traduit en libc.so.6
est quelque peu compliquée: pour la glibc, libc.so
est un script de l'éditeur de liens, qui contient généralement:
/* 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.
Autres conseils
gcc -Wl, - fichier de trace.c
imprimera la liste des fichiers d'entrée pour ld