如何通过库名找到库的文件名?

Cra*_*enz 11 linker gcc dynamic-linking libraries

如何通过库名找到库的文件名?

换句话说,当我使用"-lc"时,我知道它是/lib/libc.so.6(或类似的东西.)我希望能够输入一些命令,其中"-lc"是输入和"/ lib /libc.so.6"是输出.为了进一步扩展这个想法,我想指定我自己的搜索路径,这样我就可以将这个库解析器用于不同的工具链......任何帮助都会很棒,

谢谢Chenz

Emp*_*ian 10

如果你想知道给定的GCC会找到libc.a或libc.so的位置,请执行以下操作:

gcc --print-file-name=libc.a
gcc --print-file-name=libc.so
Run Code Online (Sandbox Code Playgroud)

-lc转换的原因libc.so.6有点复杂:对于glibc,libc.so是一个链接器脚本,通常包含:

/* 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 ) )
Run Code Online (Sandbox Code Playgroud)

或类似的东西.


小智 5

gcc -Wl,--跟踪文件.c

将打印 ld 的输入文件列表