web-dev-qa-db-fra.com

Clang ne voit pas les en-têtes de base

J'ai essayé de compiler hello world sur Fedora 20 avec Clang et le résultat est le suivant:

d.cpp: 1: 10: erreur fatale: fichier 'iostream' introuvable

#include <iostream>

Je ne sais pas comment le résoudre.

43
sweet_sugar

Point résolu le problème pour moi.

1. Eu le même problème, Fedora 21 :: Clang 3.5.0:

clang++ -std=c++14 -pedantic -Wall test_01.cpp -o test_01 -v

2.

ignoring nonexistent directory "/usr/lib/gcc/i686-redhat-linux/4.9.2/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/include
 /usr/bin/../lib/clang/3.5.0/include
 /usr/include
End of search list.
test_01.cpp:1:10: fatal error: 'iostream' file not found
#include <iostream>

3.

Sudo yum install gcc-c++

4.

#include "..." search starts here:
#include <...> search starts here:
 /bin/../lib/gcc/i686-redhat-linux/4.9.2/../../../../include/c++/4.9.2
 /bin/../lib/gcc/i686-redhat-linux/4.9.2/../../../../include/c++/4.9.2/i686-redhat-linux
 /bin/../lib/gcc/i686-redhat-linux/4.9.2/../../../../include/c++/4.9.2/backward
 /usr/local/include
 /usr/bin/../lib/clang/3.5.0/include
 /usr/include
 /usr/lib/gcc/i686-redhat-linux/4.9.2/include
End of search list.
14
user4823890

Cela est dû au fait que g ++ n'est pas installé, donc libstdc ++ n'est pas présent.

Vous pouvez installer g ++, ou si LLVM est préféré, installez LLVM libc ++ et spécifiez que vous souhaitez l’utiliser, comme suit:

Sudo apt-get install libc++-dev
clang++ -stdlib=libc++ <rest of arguments>

Vous souhaiterez peut-être lier/usr/bin/c ++ au compilateur par défaut:

ln -s /usr/bin/c++ /usr/bin/clang++-libc++

puis compiler simplement en utilisant

$ c++ <args_as_usual>
32
ArunasR

On dirait que vous devriez fournir à votre construction clang l'option -stdlib. L'un de -stdlib = libc ++ ou -stdlib = libstdc ++ fonctionnera probablement. Il y a plus de détails sur votre sujet:

Quand est-il nécessaire d'utiliser le drapeau -stdlib = libstdc ++?

0
Stepan Dyatkovskiy