¿Cómo puedo encontrar el nombre de archivo de una biblioteca a través del nombre de la biblioteca?
-
06-07-2019 - |
Pregunta
¿Cómo puedo encontrar el nombre de archivo de una biblioteca a través del nombre de la biblioteca?
En otras palabras, cuando uso " -lc " ;, sé que es /lib/libc.so.6 (o algo similar). Quiero poder escribir algún comando donde " -lc " es la entrada y " /lib/libc.so.6" es la salida. Para ampliar esta idea, quise especificar mi propia ruta de búsqueda para poder utilizar esta resolución de bibliotecas para diferentes cadenas de herramientas ... Cualquier ayuda sería increíble,
Gracias Chenz
Solución
Si desea averiguar dónde encontrará un GCC determinado libc.a o libc.so, haga lo siguiente:
gcc --print-file-name=libc.a
gcc --print-file-name=libc.so
La razón por la que -lc
se traduce en libc.so.6
es algo complicada: para glibc, libc.so
es un script de vinculador, que generalmente contiene:
/* 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 algo similar.
Otros consejos
gcc -Wl, - trace file.c
imprimirá la lista de archivos de entrada para ld