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

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top