Clang ast-dump 导致无限循环

Clang ast-dump results in infinite loop

出于某种原因,当我尝试使用 Clang 获取任何 C/C++ 代码的 ast-dump 时,我得到一个无限循环,最终导致 clang: error: linker command failed with exit code 1136 或一些类似的错误代码。

我 运行ning Windows 10 使用 Clang 版本 13.0(也尝试使用 Clang 12.0 遇到同样的问题)。我 运行 命令 clang -Xclang -ast-dump filename.c.

我已经尝试了多个文件,但此时我只是想获得一个 hello world ast(通过 clang 编译并且 运行s 很好)。

#include <stdio.h>

int main()
{
    printf("Hello, World!\n");
    return 0;
}

我确定我遗漏了一些简单的东西,但我很感激任何帮助,谢谢!

如果终止就不是死循环。 :-)

转储的 AST 包含 stdio.h,你也包含了它,所以它相当大(大约 800 行,当我尝试时)。

错误信息是因为clang编译器(cc1)在给它传递-ast-dump选项时没有生成目标文件,但是clang驱动程序(clang)没有知道那个。驱动程序希望能够 link 将生成的目标文件转换为可执行文件,但它没有找到目标文件,所以它会抱怨。

使用

clang -Xclang -ast-dump -fsyntax-only filename.c

在转储 AST 后终止驱动程序。