web-dev-qa-db-fra.com

g ++ 4.6 ne produit aucun fichier <bits/c ++ config.h> comme requis par la chaîne d'en-tête

Il n'y a pas de fichier appelé bits/c++config.h dans le répertoire include c ++ requis par le fichier d'en-tête cstring. Mais quand j'inclus l'en-tête cstring et compile avec g++, cela ne me donne pas d'erreur. Le problème est survenu lorsque j'ai essayé de compiler le programme avec le compilateur clang++ de la manière suivante.

$clang++ -cc1 -I/usr/include -I/usr/include/c++/4.6.1 -I/usr/lib/gcc/i686-linux-gnu/4.6.1 -I/usr/include/i386-linux-gnu -I opt_149739_build/include hello.cpp

In file included from /media/space/hello.cpp:2:
In file included from /media/space/opt_149739_build/include/clang/Driver/Driver.h:13:
In file included from /media/space/opt_149739_build/include/clang/Basic/Diagnostic.h:17:
In file included from /media/space/opt_149739_build/include/clang/Basic/DiagnosticIDs.h:18:
In file included from /media/space/opt_149739_build/include/llvm/ADT/StringRef.h:14:
/usr/include/c++/4.6.1/cstring:42:10: fatal error: 'bits/c++config.h' file not found
#include <bits/c++config.h>

J'utilise g ++ 4.6.1 sur Ubuntu 11.04

Qu'est ce qui ne s'est pas bien passé?

20
A. K.

Le fichier bits/c++config.h est l'inclusion spécifique à la plate-forme par rapport au compilateur actuel. Il est donc caché dans un autre répertoire, recherché par défaut par g ++, mais pas par clang ++, comme il semble.

En cours d'exécution, locate c++config.h donne les fichiers (pertinents) suivants sur ma machine:

/usr/include/c++/4.6/i686-linux-gnu/64/bits/c++config.h
/usr/include/c++/4.6/i686-linux-gnu/bits/c++config.h

Le premier est pour 64 bits et le second pour 32 bits.

Donc, ajoutez simplement -I/usr/include/c++/4.6/i686-linux-gnu ou -I/usr/include/c++/4.6/i686-linux-gnu/64 ou ce dont vous avez besoin pour votre plate-forme.

29
rodrigo

Cela peut être lié à la façon dont clang ++ recherche ses fichiers d’en-têtes.

Vous trouverez un exemple de correctif indiquant comment ils corrigent ce problème pour Fedora il y a 15 mois, ici .

Voir ceci Red Hat bugzilla post pour plus d’informations. 

0
Coren