【问题标题】:which linker should I use for clang on windows我应该在 Windows 上使用哪个链接器来发出叮当声
【发布时间】:2017-04-01 14:46:49
【问题描述】:

我只是想了解如何在 Windows 上使用 Clang/LLVM(不是 Microsoft Clanf/C2 工具链)。

请澄清我的理解: here 是对进程的描述。

我是否理解这一点,要生成可执行文件,这些步骤应该明确执行:

  • clang.exe(前端编译器)
  • llc.exe(后端代码生成器)
  • lld.exe(链接器)

或隐含地:

  • 只是运行 clang.exe(它自己运行其他工具)

但是,在上面的手册中,建议使用 Microsoft Linker (link.exe),为什么?

  • 因为这个链接器可以生成.pdb 文件供ms 调试器调试? link.exe 和 lld.exe 的工作结果的唯一区别是什么?
  • 如果我仍然使用 lld.exe - 这将为 win 平台生成有效的可执行文件,不是吗?
  • 如果我将使用 lld - 这可以为在 Windows 上使用 lldb 生成自己的格式调试信息吗?

【问题讨论】:

    标签: c++ clang llvm lldb


    【解决方案1】:

    link.exe 是 Windows 上的标准链接器,并且(从 LLVM 3.9 开始)可以生成 pdb 调试信息以使用 Visual Studio 进行调试。如果您打算使用 lldb,Link.exe 不会保留 DWARF 调试信息。

    lld 将产生有效的 DWARF 调试信息,但我上次检查时(我认为是 LLVM 3.7 左右)它仅适用于 x86。它将链接一个 x64 可执行文件,但不提供有效的调试信息。

    更多信息在这里。 http://lld.llvm.org/windows_support.html

    【讨论】:

    • (注意:在写完原始答案几年后,即使不在link.exe 模式下运行,lld 也能够输出 codeview/PDB)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-20
    相关资源
    最近更新 更多