Instalando o clang 5.0 e usando C ++ 17

11

Eu tenho tentado por 3 dias instalar o clang 5.0 em uma máquina Ubuntu 16.04. Eu tentei vários guias , mas nada parece funcionar. Quando eu tento simplesmente pegar o mais recente do SVN e construir / instalar (como detalhado aqui ), tentando compilar um programa simples leva a:

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

Tentei definir o sinal -DGCC_INSTALL_PREFIX para cmake antes de criar, mas isso leva a um erro ainda melhor:

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

Os passos que eu tenho seguido são (do guia acima):

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

Alguém poderia me tratar como um idiota e explicar passo-a-passo como instalar o clang 5.0? Ou me aponte para um guia que até mesmo bobos básicos como eu podem seguir? Se você também pode explicar como construir e instalar o libc ++ para C ++ 17, eu ficaria eternamente grato.

Atualizar : Parece que não estou instalando o clang corretamente, já que esta é a saída de uma compilação detalhada com clang:

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

e esta é a saída para 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
...
    
por Steve D 15.04.2017 / 20:24

1 resposta

26

Instale o clang-5 dos repositores do llvm.org

Primeiro, devemos adicionar os repositórios llvm.org às nossas listas de fontes, a linha que devemos adicionar é:

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

Abra o nano e adicione a linha acima a este arquivo:

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

Adicione a chave do repositório, que fará apt verificar os pacotes baixados.

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

Depois disso, atualize suas listas:

sudo apt-get update

Em seguida, instale o clang-5:

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

Deve funcionar.

Se você deseja obter uma lista de todos os pacotes disponíveis desse repositório recém-adicionado:

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

Ele vai te dar uma lista como:

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

Você pode então instalar o que quiser.

Isso pode ajudar seu problema de compilação

O arquivo de cabeçalho que foi mencionado não existe em seu erro: stdarg.h é uma parte de libstdc++-5-dev package.

Eu tenho este pacote na minha máquina, por isso, se eu correr:

aptitude why libstdc++-5-dev

Eu vou conseguir:

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)

Parece que a instalação do pacote build-essential deve resolver este erro seu, porque não sei o que você fez.

    
por Ravexina 15.04.2017 / 20:44