[英]How do I compile C++ with Clang?
命令clang
用于 C,命令clang++
用于 C++。
我不知道为什么没有直接解决问题的答案。 当你想编译 C++ 程序时,最好使用clang++
。 例如,以下对我有用:
clang++ -Wall -std=c++11 test.cc -o test
如果编译正确,它将生成可执行文件test
,您可以使用./test
运行该文件。
或者你可以使用clang++ test.cc
来编译程序。 它将生成一个名为a.out
的默认可执行文件。 使用./a.out
运行文件。
如果你熟悉 g++,整个过程很像 g++。 请参阅此帖子以检查-Wall
选项中包含哪些警告。 此页面显示了 Clang 支持的诊断标志列表。
关于使用clang -x c++
:Kim Gräsman 说你也可以使用clang -x c++
来编译 cpp 程序,但这可能不是真的。 例如,我在下面有一个简单的程序:
#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(如 GCC)接受-x
开关来设置输入文件的语言,例如,
$ clang -x c++ some_random_file.txt
这个邮件列表线程很好地解释了clang
和clang++
之间的区别: Difference between clang and clang++
我在从源代码构建 Clang 时遇到了类似的问题(但不是使用sudo apt-get install
。这可能取决于您运行的 Ubuntu 版本)。
可能值得检查一下clang++
可以找到 C++ 库的正确位置:
比较g++ -v <filename.cpp>
和clang++ -v <filename.cpp>
,在“#include < ... > search starts here:”下。
解决方案1:
clang++ your.cpp
解决方案2:
clang your.cpp -lstdc++
解决方案3:
clang -x c++ your.cpp
打开终端窗口并导航到您的项目目录。 运行这些命令集,具体取决于您安装的编译器:
使用 clang++ 编译多个 C++ 文件:
$ clang++ *.cpp
$ ./a.out
使用 g++ 编译多个 C++ 文件:
$ g++ -c *.cpp
$ g++ -o temp.exe *.o
$ ./temp.exe
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.