web-dev-qa-db-fra.com

Installer Clang 5.0 et utiliser C ++ 17

Cela fait 3 jours que j'essaie d'installer Clang 5.0 sur une machine Ubuntu 16.04. J'ai essayé diversguides , mais rien ne semble fonctionner. Lorsque j'essaie simplement de récupérer les dernières informations de SVN et de construire/installer (comme détaillé ici ), essayer de compiler un programme simple conduit à:

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

J'ai ensuite essayé de définir l'indicateur -DGCC_INSTALL_PREFIX pour cmake avant de le construire, mais cela conduit à l'erreur encore meilleure:

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

Les étapes que j'ai suivies sont (à partir du guide ci-dessus):

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

Quelqu'un pourrait-il me traiter comme un idiot et expliquer, étape par étape, comment installer Clang 5.0? Ou me diriger vers un guide que même des imbéciles de base comme moi peuvent suivre? Si vous pouvez également expliquer comment compiler et installer libc ++ pour C++ 17, je vous en serai éternellement reconnaissant.

Update : Il semble que je n'installe pas correctement clang, car il s'agit du résultat d'une compilation verbeuse avec clang:

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

et voici la sortie pour 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
...
17
Steve D

Installer clang-5 à partir de llvm.org repositores

Premièrement, nous devrions ajouter les dépôts llvm.org à nos listes de sources, la ligne à ajouter est la suivante:

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

Ouvrez nano et ajoutez la ligne ci-dessus à ce fichier:

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

Ajoutez la clé du référentiel, cela permettra à apt de vérifier les packages téléchargés.

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

Après cela, mettez à jour vos listes:

Sudo apt-get update

Ensuite, installez Clang-5:

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

Ça devrait marcher.

Si vous souhaitez obtenir une liste de tous les packages disponibles à partir de ce référentiel récemment ajouté:

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

Cela vous donnera une liste comme:

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

Vous pouvez ensuite installer ce que vous voulez.


Cela peut aider votre problème de compilation

Le fichier d'en-tête mentionné n'existe pas dans votre erreur: stdarg.h fait partie du package libstdc++-5-dev.

J'ai ce paquet sur ma machine, donc si je lance:

aptitude why libstdc++-5-dev

J'aurai:

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)

Il semble donc que l’installation du paquet build-essential devrait résoudre le problème this , car je ne suis pas sûr de ce que vous avez terminé.

32
Ravexina