clang 5.0のインストールとC ++ 17の使用


17

Ubuntu 16.04マシンに3日間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をインストールする方法を段階的に説明できますか?または、私のような基本的な愚か者でも従うことができるガイドを教えてください。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
...

このコマンドの出力は次のとおりですdpkg -l libstdc++-5-dev | tail -1
。– Ravexina

あなたは持っていますbuild-essentialインストールされていますか?
-Ravexina

@Ravexina:ii libstdc++-5-dev:amd64 5.4.0-6ubuntu1~16.04.4 amd64 GNU Standard C++ Library v3 (development files)
スティーブD

@Ravexina:はい、build-essentialがインストールされています。
スティーブD

回答:


33

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パッケージをインストールすると、このエラーが解決されるはずです。原因はわかりません。


私がしているbuild-essentialインストールされています。しかし、私の出力aptitude why libstdc++-5-devはあなたのものと全く同じです。ただし、ビルドに不可欠な行はありません。
スティーブD

私はわからないんだけど、自分のものの一部をリポジトリからインストールされ、他の部分は手動でインストールされているので、多分それはだ@SteveD、多分などのライブラリのバージョンではいくつかの不一致がある
Ravexina

私は問題だと思うもので質問の本文を更新しました。おそらくあなたはそれを修正する方法を知っていますか?
スティーブD

@SteveDの出力は私の目にはあまり役に立ちません。他の誰かがもっと役立つと思うかもしれません。リポジトリからインストールしないのはなぜですか?あなたの問題が
なくなる

リポジトリにはないclang 5.0が必要です。
スティーブD
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.