繁体   English   中英

如何使用 Clang 编译 C++?

[英]How do I compile C++ with Clang?

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

命令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++ ,以免产生额外的麻烦。

  • 叮当版本:11.0.0
  • 平台:Ubuntu 16.04

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

$ clang -x c++ some_random_file.txt

这个邮件列表线程很好地解释了clangclang++之间的区别: 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM