【问题标题】:How to I find the filename of a library via the library name?如何通过库名找到库的文件名?
【发布时间】:2009-10-23 17:10:47
【问题描述】:

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

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

谢谢 陈兹

【问题讨论】:

    标签: gcc linker libraries dynamic-linking


    【解决方案1】:

    如果您想找出给定的 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 ) )
    

    或类似的东西。

    【讨论】:

    • 此命令不适用于用户库,即使我在 $LD_LIBRARY_PATH 中添加了本地库路径。
    【解决方案2】:

    gcc -Wl,--trace file.c

    将打印 ld 的输入文件列表

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-14
      • 2014-06-17
      相关资源
      最近更新 更多