安装clang 5.0并使用C ++ 17

我已经尝试了3天在Ubuntu 16.04机器上安装clang 5.0。 我尝试过各种 指南 ,但似乎没什么用。 当我尝试简单地从SVN获取最新版本并构建/安装(如此处详述)时,尝试编译一个简单的程序会导致:

> clang++ basic.cpp /usr/include/wchar.h:39:11: fatal error: 'stdarg.h' file not found # include  

然后我尝试在构建之前为cmake设置-DGCC_INSTALL_PREFIX标志,但这会导致更好的错误:

 > clang++ basic.cpp fatal error: 'iostream' file not found #include  

我一直遵循的步骤(来自上面的指南):

 > cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local/ \ -G "Unix Makefiles" path/to/llvm ... > make ... > make check-clang ... > make install-clang ... 

有人可以像对待白痴一样对待我并逐步解释如何安装clang 5.0吗? 或者指点我甚至像我这样的基本傻瓜都可以效仿? 如果您还可以解释如何构建和安装libc ++ for C ++ 17,我将永远感激不尽。

更新 :似乎我没有正确安装clang,因为这是使用clang进行详细编译的输出:

 ... #include  search starts here: /usr/local/include /usr/include/x86_64-linux-gnu /usr/include 

这是g ++的输出:

 #include  search starts here: /usr/include/c++/5 /usr/include/x86_64-linux-gnu/c++/5 /usr/include/c++/5/backward /usr/lib/gcc/x86_64-linux-gnu/5/include /usr/local/include /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed /usr/include/x86_64-linux-gnu /usr/include ... 

从llvm.org repositores安装clang-5

首先,我们应该将llvm.org存储库添加到我们的源列表中,我们应该添加的行是:

 deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-5.0 main 

打开nano并将以上行添加到此文件:

 sudo nano /etc/apt/sources.list.d/llvm.list 

添加存储库密钥,它将使apt能够validation下载的软件包。

  wget -O - http://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - 

之后,更新您的列表:

 sudo apt-get update 

然后安装clang-5:

 sudo apt-get install clang-5.0 lldb-5.0 lld-5.0 

它应该工作。

如果要从此新添加的存储库中获取所有可用包的列表:

 grep -i package: /var/lib/apt/lists/apt.llvm* | cut -f3 -d: | sort | uniq 

它将为您提供如下列表:

 clang-5.0 clang-5.0-doc clang-5.0-examples libclang-common-5.0-dev ... 

然后,您可以安装所需的任何内容。


它可能有助于编译问题

您提到的头文件在您的错误中不存在: stdarg.hlibstdc++-5-dev软件包的一部分。

我的机器上有这个包,所以如果我运行:

 aptitude why libstdc++-5-dev 

我会得到:

 i build-essential Depends g++ (>= 4:5.2) i A g++ Depends g++-5 (>= 5.3.1-3~) i A g++-5 Depends libstdc++-5-dev (= 5.4.0-6ubuntu1~16.04.4) 

所以似乎安装build-essential包应该可以解决你的这个错误,因为我不确定你做了什么。