Installazione di clang 5.0 e utilizzo di C ++ 17


17

Ho provato per 3 giorni a installare clang 5.0 su una macchina Ubuntu 16.04. Ho provato varie guide , ma nulla sembra funzionare. Quando provo semplicemente a prendere l'ultimo da SVN e compilare / installare (come dettagliato qui ), provare a compilare un semplice programma porta a:

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

Ho quindi provato a impostare il -DGCC_INSTALL_PREFIXflag cmakeprima di creare, ma questo porta all'errore ancora migliore:

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

I passaggi che ho seguito sono (dalla guida sopra):

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

Qualcuno potrebbe trattarmi come un idiota e spiegare passo dopo passo come installare clang 5.0? O indicarmi una guida che anche gli sciocchi di base come me possono seguire? Se puoi anche spiegare come compilare e installare libc ++ per C ++ 17, sarei eternamente grato.

Aggiornamento : sembra che non stia installando clang correttamente, poiché questo è l'output di una compilation dettagliata con clang:

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

e questo è l'output per 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
...

Qual è l'output di questo comando:dpkg -l libstdc++-5-dev | tail -1
— Ravexina,

Hai build-essentialinstallato?
— 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: e sì, build-essential è installato.
— Steve D,

Risposte:


33

Installa clang-5 dai repository di llvm.org

Innanzitutto, dovremmo aggiungere i repository llvm.org ai nostri elenchi di fonti, la linea che dovremmo aggiungere è:

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

Apri nano e aggiungi la riga sopra a questo file:

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

Aggiungi la chiave del repository, sarà in aptgrado di verificare i pacchetti scaricati.

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

Successivamente, aggiorna i tuoi elenchi:

sudo apt-get update

Quindi installare clang-5:

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

Dovrebbe funzionare.

Se si desidera ottenere un elenco di tutti i pacchetti disponibili da questo repository appena aggiunto:

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

Ti darà un elenco come:

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

È quindi possibile installare quello che si desidera.


Potrebbe aiutare il tuo problema di compilazione

Il file di intestazione che è stato menzionato non esiste nel tuo errore: stdarg.hfa parte del libstdc++-5-devpacchetto.

Ho questo pacchetto sul mio computer, quindi se corro:

aptitude why libstdc++-5-dev

Io metterò:

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)

Quindi sembra che l'installazione del build-essentialpacchetto dovrebbe risolvere questo tuo errore, perché non sono sicuro di quello che hai fatto.


Ho build-essentialinstallato. Ma l'output per my aptitude why libstdc++-5-devè esattamente uguale al tuo, tranne per il fatto che non esiste una riga essenziale per la build.
— Steve D,

@SteveD Non ne sono sicuro, ma forse è perché parte delle tue cose sono installate dal repository e l'altra parte è installata manualmente, forse ci sono alcune discrepanze nella versione delle librerie ecc.
— Ravexina

Ho aggiornato il corpo della domanda con quello che penso sia il problema, forse sai come risolverlo?
— Steve D,

@SteveD l'output non è così utile ai miei occhi, forse qualcun altro li trova più utili. perché non lo installi dai repository? Penso che ci sia un'alta probabilità che il tuo problema
— scompaia

Ho bisogno di clang 5.0, che non è disponibile nei repository.
— Steve D,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.