【问题标题】:Clang and LLVM - Release vs Debug buildsClang 和 LLVM - 发布与调试构建
【发布时间】:2014-03-05 19:39:45
【问题描述】:

这似乎是一个简单的问题,但要花很多时间才能弄清楚......

instructions for building LLVM+Clang 中,提到了一个Release 和一个Debug 配置。是调试版本:

  • 调试 LLVM/Clang 本身,

  • 正在调试您尝试使用 Clang+LLVM 构建的应用程序?

我最初假设是前者,但后来 (1) 它是默认设置,(2) 我发现了多组指令,它们指导我们构建调试模式,(3) 虽然我假设它会只对一小部分用户感兴趣 — 大多数用户希望使用 Clang+LLVM,而不是深入研究优化编译器设计的复杂性。

我打算只使用 Clang 代替 GCC,以利用我所听到的更好的错误消息,但我需要调试它在 GDB 下生成的程序.发布版本的 Clang 就足够了吗?

(注意Debug版本is a few GB可能需要很长时间才能构建,所以我宁愿找出简单的方法。)

另外,on that same page,它说我应该指定ONLY_TOOLS="tools you need",但是在哪里可以选择列表?

【问题讨论】:

    标签: debugging configuration clang llvm building


    【解决方案1】:

    前者是正确的——如果你想调试编译器,你只需要在调试模式下构建 LLVM 和 Clang。如果要调试生成的应用程序,则需要使用调试符号对其进行编译 - 即在构建程序时将 -g 标志传递给 Clang - 无论 LLVM 和 Clang 是在哪种模式下构建的,都会启用。

    所以为了你的需要,你应该在发布模式下编译。

    至于您的问题-为什么是默认值-我猜这是因为假设如果您只想运行它,您只需获得pre-built binary 而不是下载和构建源代码。

    另外,关于你潜入的最后一个问题 - 我相信它指的是来自 this list of LLVM tools 的工具。

    【讨论】:

    • 某处我读到预构建的二进制文件在某些​​方面以 Visual Studio 为目标,并且确实在尝试它,(并指定系统包含带有 isystem 的路径,如 here $ clang++ -std=c++11 -isystem /usr/local/include -isystem /mingw/lib/gcc/mingw32/4.8.1/include/c++ -isystem /mingw/lib/gcc/mingw32/4.8.1/include/c++/mingw32/ -isystem /mingw/lib/gcc/mingw32/4.8.1/include/c++/backward/ -isystem /mingw/include/ -isystem /mingw/lib/gcc/mingw32/4.8.1/include -isystem /mingw/lib/gcc/mingw32/4.8.1/include-fixed/ b.cpp 所述,我得到:
    • ...C:/m/lib/gcc/mingw32/4.8.1/include\x86intrin.h:27: C:/m/lib/gcc/mingw32/4.8.1/include\ia32intrin.h:41:10: error: use of undeclared identifier '__builtin_ia32_bsrsi' return __builtin_ia32_bsrsi (__X);
    • 在 MinGW/MSYS 下尝试make 最新的 SVN 版本或最新版本 3.4 的运气不佳:我得到了llvm/lib/Support/Windows/Process.inc:366:32: error: 'rand_s' was not declared in this scope。所以现在放弃吧,因为虽然我确信在进行一些故障排除后我可以让它在我的系统上工作,但它必须足够简单,其他人可以在 10 个简单的步骤中完成,而且还要面向未来,因为我将分发的建议笔记。
    • 哦,是的,还尝试从 sourceforge.net/projects/mingw-w64/files/… 下载 i686-w64-mingw32-clang-3.2-release-win32_rubenvb.7z(其中包含 w64,但在 32 位和 64 位版本下运行)但是 那个 clang++ segfaults 并且在 gdb 下运行它,堆栈跟踪没有显示任何明显的东西。
    • @EvgeniSergeev 恐怕我不知道如何帮助您...您应该针对这些问题提出另一个问题(或在 LLVM-dev 邮件列表中提问)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 2014-09-09
    • 1970-01-01
    • 2014-10-23
    • 1970-01-01
    相关资源
    最近更新 更多