我已经在Ubuntu中使用apt-get安装了Clang,我可以使用它成功编译C文件。但是我不知道如何通过它编译C++。我需要做什么来编译C++?
voj3qocg1#
命令clang用于C,命令clang++用于C++。
clang
clang++
s8vozzvw2#
我不知道为什么没有直接解决这个问题的答案。当你想编译C++程序时,最好使用clang++,而不是使用clang。例如,下面的代码对我很有效:
clang++ -Wall -std=c++11 test.cc -o test
如果编译正确,它将生成可执行文件test,您可以使用./test运行该文件。或者你也可以用clang++ test.cc编译这个程序,它会生成一个默认的可执行文件a.out,用./a.out运行这个文件。如果你熟悉g的话,整个过程很像g。请参见this post来检查-Wall选项包含了哪些警告。本页显示了Clang支持的诊断标志列表。
test
./test
clang++ test.cc
a.out
./a.out
-Wall
使用clang -x c++的注意事项:Kim Gräsman说你也可以使用clang -x c++来编译CPP程序,但这并不总是可行的。例如,我有一个简单的程序:
clang -x c++
#include <iostream> #include <vector> int main() { /* std::vector<int> v = {1, 2, 3, 4, 5}; */ std::vector<int> v(10, 5); int sum = 0; for (int i = 0; i < v.size(); i++){ sum += v[i]*2; } std::cout << "sum is " << sum << std::endl; return 0; }
clang++ test.cc -o test会编译成功,但clang -x c++不会,显示出大量未定义的引用错误,所以我猜它们并不完全等效,在编译c++程序时最好使用clang++而不是clang -x c++,以避免额外的麻烦。
clang++ test.cc -o test
vsikbqxv3#
同样,对于后代-- Clang(像GCC一样)接受-x开关来设置输入文件的语言,例如,
-x
$ clang -x c++ some_random_file.txt
这个邮件列表主题很好地解释了clang和clang++之间的区别:***
vu8f3i0k4#
方案一:
clang++ your.cpp
方案二:
clang your.cpp -lstdc++
方案三:
clang -x c++ your.cpp
hc8w905p5#
我在从源代码构建Clang时遇到过类似的问题(但不是用sudo apt-get install。这可能取决于你运行的Ubuntu版本)。可能值得检查一下clang++是否可以找到C++库的正确位置:在“#include search starts here:“下比较g++ -v <filename.cpp>和clang++ -v <filename.cpp>的结果< ... >。
sudo apt-get install
g++ -v <filename.cpp>
clang++ -v <filename.cpp>
vwhgwdsa6#
打开“终端”窗口并导航到项目目录。运行以下命令集,具体取决于您安装的编译器:
使用clang编译多个C文件:
$ clang++ *.cpp $ ./a.out
使用g编译多个C文件:
$ g++ -c *.cpp $ g++ -o temp.exe *.o $ ./temp.exe
6条答案
按热度按时间voj3qocg1#
命令
clang
用于C,命令clang++
用于C++。s8vozzvw2#
我不知道为什么没有直接解决这个问题的答案。当你想编译C++程序时,最好使用
clang++
,而不是使用clang
。例如,下面的代码对我很有效:如果编译正确,它将生成可执行文件
test
,您可以使用./test
运行该文件。或者你也可以用
clang++ test.cc
编译这个程序,它会生成一个默认的可执行文件a.out
,用./a.out
运行这个文件。如果你熟悉g的话,整个过程很像g。请参见this post来检查
-Wall
选项包含了哪些警告。本页显示了Clang支持的诊断标志列表。使用
clang -x c++
的注意事项:Kim Gräsman说你也可以使用clang -x c++
来编译CPP程序,但这并不总是可行的。例如,我有一个简单的程序:clang++ test.cc -o test
会编译成功,但clang -x c++
不会,显示出大量未定义的引用错误,所以我猜它们并不完全等效,在编译c++程序时最好使用clang++
而不是clang -x c++
,以避免额外的麻烦。vsikbqxv3#
同样,对于后代-- Clang(像GCC一样)接受
-x
开关来设置输入文件的语言,例如,这个邮件列表主题很好地解释了
clang
和clang++
之间的区别:***vu8f3i0k4#
方案一:
方案二:
方案三:
hc8w905p5#
我在从源代码构建Clang时遇到过类似的问题(但不是用
sudo apt-get install
。这可能取决于你运行的Ubuntu版本)。可能值得检查一下
clang++
是否可以找到C++库的正确位置:在“#include search starts here:“下比较
g++ -v <filename.cpp>
和clang++ -v <filename.cpp>
的结果< ... >。vwhgwdsa6#
打开“终端”窗口并导航到项目目录。运行以下命令集,具体取决于您安装的编译器:
使用clang编译多个C文件:
使用g编译多个C文件: