【问题标题】:What does collect2.exe do?collect2.exe 有什么作用?
【发布时间】:2011-02-18 20:09:15
【问题描述】:

当我检查 gcc -v -o proggy.exe proggy.o 生成的代码时,我发现命令行扩展为一大堆库选项和库,所有这些都使用 collect2.exe 链接。 ld.exe怎么了?为什么我看不到?有人可以向我解释一下 collect2.exe 的作用吗?

【问题讨论】:

    标签: c++ c gcc linker ld


    【解决方案1】:

    collect2 是一个实用程序,用于生成__main(在main 开头调用的自动生成函数)所依赖的构造函数表。通常你看不到它,因为它在文件系统上被命名为ld,然后它又调用了真正的ld(通常称为real-ld,尽管collect2会检查许多地方来寻找它)

    【讨论】:

    • 先生。 Mrozek,谢谢你的回复。下一个问题:如果我在命令行上使用 LD.EXE,代码会发生什么?假设我有 ld.exe -L/some_lib proggy.o -lsome_lib_lib。这是如何扩展的?您之前对我最初问题的回答非常有启发性!谢谢,马克
    • 值得注意的是,现代 ELF 系统不需要该集合(这当然是一个讨厌的 hack)。他们将 ELF 的 ctors 和 dtors 部分用于构造函数和析构函数。
    【解决方案2】:

    GCC 在几乎所有系统上都使用一个名为 collect2 的实用程序来安排在启动时调用各种初始化函数。 [link]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-02
      • 2014-09-03
      • 2017-12-18
      • 2014-05-20
      • 1970-01-01
      • 1970-01-01
      • 2019-07-31
      相关资源
      最近更新 更多