2012-02-05 123 views

回答

106

命令clang用于C,命令clang++用于C++。

+0

没有它没有工作。我们是否需要安装它? – pythonic 2012-02-05 10:33:00

+24

恐怕我的水晶球有缺陷,所以你实际上不得不告诉我们是否有任何错误信息;) – 2012-02-05 10:35:26

+4

@ user1018562请定义“不工作”。那个'command not found'或其他错误? – adl 2012-02-05 10:36:04

3

从源码构建Clang(但不包含sudo apt-get install,这可能取决于您运行的Ubuntu的版本)时,我遇到了类似的问题。

这可能是值得检查,如果clang++可以找到你的C++库中的正确位置:

比较的g++ -v <filename.cpp>clang++ -v <filename.cpp>,结果下“的#include < ...>搜索从这里开始:”。

38

此外,为后人 - 锵(如GCC)接受-x开关设置输入文件的语言,例如,

$ clang -x c++ some_random_file.txt 

这个邮件列表线程解释clangclang++之间的差异以及:Difference between clang and clang++

+2

当编译cpp文件时使用'#include ',我有_clang -x C++ _链接器错误。 _-lstdC++ _ flag解决了这个问题。 – Vyacheslav 2015-10-02 16:17:25

+1

现在我的眼前有Clang的源代码。在构建期间(在Windows上),它首先构建'clang.exe',然后将该可执行文件复制到'clang ++。exe'中。所以它是相同的可执行文件,只是在运行时它会检查自己的名称以区分是否作为C或C++编译器运行。 HTH。 – 2017-01-06 12:05:58

+0

需要注意的是,选项'-x C++'对于* clang-tidy *作为'-extra-arg'是非常有用的,强制它将.h文件视为包含C++而不是C。 – 2017-11-17 15:58:04

7

我不知道为什么没有答案直接解决问题。当你想编译C++程序时,最好使用clang++。例如,对于我下面的作品:

clang++ -Wall -std=c++11 test.cc -o test 

如果正确编译,就会产生可执行文件test,您可以通过使用./test运行该文件。

或者你也可以用clang++ test.cc来编译程序。它将生成一个名为a.out的默认可执行文件。使用./a.out来运行该文件。

如果你熟悉g ++,整个过程就像g ++一样。请参阅this post以检查-Wall选件中包含哪些警告。 This page显示了Clang支持的诊断标志列表。

相关问题