我已经尝试了 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 <stdarg.h>
然后我尝试-DGCC_INSTALL_PREFIX
在构建之前设置标志cmake
,但这导致了更严重的错误:
> clang++ basic.cpp
fatal error: 'iostream' file not found
#include <iostream>
我一直遵循的步骤是(来自上述指南):
> 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 吗?或者给我指出一个指南,即使像我这样的傻瓜也能遵循?如果你还能解释如何为 C++17 构建和安装 libc++,我将不胜感激。
更新:似乎我没有正确安装 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
...
答案1
从 llvm.org 存储库安装 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
验证下载的包。
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.h
的一部分。libstdc++-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
可以解决这你的错误,因为我不确定你做了什么。