2009-10-23 6 views
10

Wie finde ich den Dateinamen einer Bibliothek über den Bibliotheksnamen? Wenn ich also "-lc" verwende, weiß ich, dass es /lib/libc.so.6 (oder etwas Ähnliches) ist. Ich möchte einen Befehl eingeben können, bei dem "-lc" die Eingabe ist und "/lib/libc.so.6" ist die Ausgabe. Um diese Idee weitere verlängern, wollte ich meinen eigenen Suchpfad angeben, damit ich diese Bibliothek Resolver für verschiedene Werkzeugketten verwenden kann ... Jede Hilfe wäre genial,Wie finde ich den Dateinamen einer Bibliothek über den Bibliotheksnamen?

Dank Chenz

Antwort

8

Wenn Sie wissen möchten, wo eine bestimmte GCC libc.a finden oder libc.so, dies zu tun:

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

Der Grund -lc in libc.so.6 übersetzt ist etwas kompliziert: für glibc, libc.so eine Linker-Skript, das in der Regel enthält:

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

oder etwas ähnliches.

4

gcc -Wl, - Spur file.c

für ld Liste der Eingabedateien drucken