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.