¿Cómo puedo encontrar el nombre de archivo de una biblioteca a través del nombre de la biblioteca?

StackOverflow https://stackoverflow.com/questions/1614769

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

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top