如何通过库名找到库的文件名?
换句话说,当我使用“-lc”时,我知道它是/lib/libc.so.6(或类似的东西)。我希望能够键入一些命令,其中“-lc”是输入,“/lib /libc.so.6" 是输出。为了进一步扩展这个想法,我想指定我自己的搜索路径,这样我就可以将这个库解析器用于不同的工具链......任何帮助都会很棒,
谢谢陈兹
如何通过库名找到库的文件名?
换句话说,当我使用“-lc”时,我知道它是/lib/libc.so.6(或类似的东西)。我希望能够键入一些命令,其中“-lc”是输入,“/lib /libc.so.6" 是输出。为了进一步扩展这个想法,我想指定我自己的搜索路径,这样我就可以将这个库解析器用于不同的工具链......任何帮助都会很棒,
谢谢陈兹
如果您想找出给定的 GCC 将在哪里找到 libc.a 或 libc.so,请执行以下操作:
gcc --print-file-name=libc.a
gcc --print-file-name=libc.so
原因-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 ) )
或类似的东西。
gcc -Wl,--跟踪文件.c
将打印 ld 的输入文件列表