如何使用Clang编译C++?

ercv8c1e  于 2022-11-19  发布在  其他
关注(0)|答案(6)|浏览(171)

我已经在Ubuntu中使用apt-get安装了Clang,我可以使用它成功编译C文件。但是我不知道如何通过它编译C++。我需要做什么来编译C++?

voj3qocg

voj3qocg1#

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

s8vozzvw

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支持的诊断标志列表。

使用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++,以避免额外的麻烦。

  • 铿锵版本:11.0.0
  • 操作系统:Ubuntu 16.04
vsikbqxv

vsikbqxv3#

同样,对于后代-- Clang(像GCC一样)接受-x开关来设置输入文件的语言,例如,

$ clang -x c++ some_random_file.txt

这个邮件列表主题很好地解释了clangclang++之间的区别:***

vu8f3i0k

vu8f3i0k4#

方案一:

clang++ your.cpp

方案二:

clang your.cpp -lstdc++

方案三:

clang -x c++ your.cpp
hc8w905p

hc8w905p5#

我在从源代码构建Clang时遇到过类似的问题(但不是用sudo apt-get install。这可能取决于你运行的Ubuntu版本)。
可能值得检查一下clang++是否可以找到C++库的正确位置:
在“#include search starts here:“下比较g++ -v <filename.cpp>clang++ -v <filename.cpp>的结果< ... >。

vwhgwdsa

vwhgwdsa6#

打开“终端”窗口并导航到项目目录。运行以下命令集,具体取决于您安装的编译器:

使用clang编译多个C文件:

$ clang++ *.cpp 
$ ./a.out

使用g编译多个C文件:

$ g++ -c *.cpp 
$ g++ -o temp.exe *.o
$ ./temp.exe

相关问题