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
...

¿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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.