2012-02-05 76 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支持的診斷標誌列表。

相關問題