常见问题解答 (FAQ)

驱动程序

我运行 clang -cc1 ... 并收到关于缺少头文件的奇怪错误

给定此源文件

#include <stdio.h>

int main() {
  printf("Hello world\n");
}

如果您运行

$ clang -cc1 hello.c
hello.c:1:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
         ^
1 error generated.

clang -cc1 是前端,clang驱动程序。驱动程序使用适合您系统的选项调用前端。要查看这些选项,请运行

$ clang -### -c hello.c

一些 clang 命令行选项是仅驱动程序选项,另一些是仅前端选项。仅前端选项仅供 clang 开发人员使用。用户不应直接运行 clang -cc1,因为 -cc1 选项不能保证稳定。

如果您想使用仅前端选项(“-cc1 选项”),例如 -ast-dump,则需要获取驱动程序生成的 clang -cc1 行并添加所需的选项。或者,您可以运行 clang -Xclang <option> ... 以强制驱动程序将 <option> 传递给 clang -cc1

我收到一些头文件丢失的错误 (stddef.h, stdarg.h)

一些头文件 (stddef.h, stdarg.h 等等) 与 Clang 一起提供 - 这些称为内置包含文件。Clang 在相对于 clang 二进制文件位置的目录中搜索它们。如果您移动了 clang 二进制文件,您也需要移动内置头文件。

可以在 内置包含文件 部分找到更多信息。