Instalar clang 5.0 y usar C ++ 17

17

He estado intentando durante 3 días instalar clang 5.0 en una máquina Ubuntu 16.04. He probado varias guías , pero nada parece funcionar. Cuando intento simplemente obtener lo último de SVN y compilar / instalar (como se detalla aquí ), intentar compilar un programa simple conduce a:

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

Luego intenté configurar la -DGCC_INSTALL_PREFIXbandera cmakeantes de construir, pero eso conduce al error aún mejor:

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

Los pasos que he seguido son (de la guía anterior):

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

¿Podría alguien tratarme como un idiota y explicar paso a paso cómo instalar clang 5.0? ¿O señalarme una guía que incluso los tontos básicos como yo pueden seguir? Si también puede explicar cómo construir e instalar libc ++ para C ++ 17, le estaría eternamente agradecido.

Actualización : Parece que no estoy instalando clang correctamente, ya que este es el resultado de una compilación detallada con clang:

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

y esta es la salida 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
...
Steve D
fuente
¿Cuál es la salida de este comando:dpkg -l libstdc++-5-dev | tail -1
Ravexina
Tienes build-essentialinstalado?
Ravexina
@Ravexina:ii libstdc++-5-dev:amd64 5.4.0-6ubuntu1~16.04.4 amd64 GNU Standard C++ Library v3 (development files)
Steve D
@Ravexina: y sí, build-essential está instalado.
Steve D

Respuestas:

33

Instalar clang-5 desde llvm.org repositores

Primero, debemos agregar los repositorios llvm.org a nuestras listas de fuentes, la línea que debemos agregar es:

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

Abra nano y agregue la línea anterior a este archivo:

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

Agregue la clave del repositorio, aptpodrá verificar los paquetes descargados.

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

Después de eso, actualice sus listas:

sudo apt-get update

Luego instale clang-5:

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

Deberia de funcionar.

Si desea obtener una lista de todos los paquetes disponibles de este repositorio agregado recientemente:

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

Te dará una lista como:

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

Luego puede instalar lo que quiera.


Puede ayudar a su problema de compilación

El archivo de encabezado que se ha mencionado no existe en su error: stdarg.hes parte del libstdc++-5-devpaquete.

Tengo este paquete en mi máquina, así que si ejecuto:

aptitude why libstdc++-5-dev

Obtendré:

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)

Entonces parece que instalar el build-essentialpaquete debería resolver este error tuyo, porque no estoy seguro de lo que has hecho.

Ravexina
fuente
He build-essentialinstalado Pero el resultado para mi aptitude why libstdc++-5-deves exactamente el mismo que el tuyo, excepto que no hay una línea esencial de compilación.
Steve D
@SteveD No estoy seguro, pero tal vez es porque parte de su materia se instalan desde el repositorio y la otra parte se instala manualmente, tal vez hay algún desajuste en la versión bibliotecas, etc.
Ravexina
He actualizado el cuerpo de la pregunta con lo que creo que es el problema, ¿tal vez sabes cómo solucionarlo?
Steve D
@SteveD la salida no es tan útil a mis ojos, tal vez alguien más los encuentre más útiles. ¿Por qué no lo instalas desde repositorios? Creo que existe una gran posibilidad de que su problema desaparezca ..
Ravexina
Necesito clang 5.0, que no está disponible en los repositorios.
Steve D