【问题标题】:GNU GCC/LD : Which libraries are linked by default?GNU GCC/LD:默认链接哪些库?
【发布时间】:2014-07-20 14:40:13
【问题描述】:

我是一名普通的 C 程序员,一段时间以来我一直想知道关于 GNU GCC/LD 内部的一些事情。

我注意到,当将一系列目标文件传递给 GCC(例如 gcc main.o otherfile.o)时,GCC 会自动链接 libc.a 库文件,而无需我在选项中明确指定 -lc。同样,当我使用ncurses 编译程序时,我只需要指定-lncurseslibtinfo.a 会自动链接(无需指定-ltinfo)。换句话说,即使ncurses 函数使用来自libtinfo 的函数(例如unctrl()),我也不需要显式链接libtinfo。

这怎么可能?

GCC/LD 是否有一个“默认库”列表,在链接时它会在其中查找缺失的符号?如果存在这样的表,它在哪里,如何配置?

【问题讨论】:

    标签: gcc linker default libraries


    【解决方案1】:

    直接的答案是,您可以通过在链接命令行中添加-v 来查看命令行选项链接了哪些库。这将在执行命令时向您显示命令。

    C 库和 GCC 支持库是自动链接的;其他库必须手动指定。

    -lncurseslibtinfo.a (libtinfo.so?) 的情况相当不同。在那里,用于构建libncurses.so 的链接命令告诉链接器这个库也需要-ltinfo,所以它会自动选择额外的库。

    【讨论】:

      猜你喜欢
      • 2012-07-13
      • 2013-02-16
      • 2023-03-11
      • 1970-01-01
      • 2014-12-03
      • 2012-10-25
      • 2020-02-27
      • 1970-01-01
      • 2013-10-26
      相关资源
      最近更新 更多