我是clang
的新手。我已经阅读了一篇关于使用cuda
编译器前端从opencl
到clang
进行源转换的文章。
有人可以告诉我为什么有时会使用选项-cc1
吗?
答案 0 :(得分:32)
Clang编译器前端具有几个额外的Clang特定功能,这些功能不通过GCC兼容性驱动程序接口公开。 -cc1
参数表示将使用编译器前端,而不是驱动程序。 clang -cc1
功能实现了核心编译器功能。
所以,简单来说。如果您不给-cc1
,那么您可以期待标准GCC的“外观和感觉”。这就是绝大多数编译器标志的工作方式就像您期望它们与GCC一起工作一样。如果传递选项“-cc1”,则会设置Clang编译器标志。因此,GCC可能存在差异。
希望能让它更清晰一点。
答案 1 :(得分:10)
通常的编译器包含所谓的编译器驱动程序,它知道如何执行编译器本身,汇编程序,链接器等,以及编译器本身只接受源代码(有时已经预处理)并发出汇编程序/目标代码。 / p>
Clang在单个二进制文件中实现所有这些组件,区别仅在于cmdline。这里clang -cc1
使用其内部/未记录的选项集等来调用编译器本身。