wake-up-neo.com

g ++ 4.6 gibt keine <bits/c ++ config.h> -Datei aus, wie von der Header-Zeichenfolge benötigt

Es gibt keine Datei mit dem Namen bits/c++config.h im C++ - Include-Verzeichnis, die von der cstring-Headerdatei benötigt wird. Aber wenn ich den Header cstring einbinde und mit g++ kompiliere, wird mir kein Fehler angezeigt. Das Problem trat auf, als ich das Programm mit dem clang++-Compiler auf folgende Weise kompilieren wollte.

$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>

Ich verwende g ++ 4.6.1 auf Ubuntu 11.04

Was schief gelaufen ist?

20
A. K.

Die Datei bits/c++config.h ist das plattformspezifische Include relativ zum aktuellen Compiler. Sie wird also in einem anderen Verzeichnis versteckt und standardmäßig von g ++ durchsucht, aber nicht von clang ++, wie es scheint.

Wenn Sie locate c++config.h ausführen, werden auf meinem Computer die folgenden (relevanten) Dateien angezeigt:

/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

Der erste ist für 64-Bit und der zweite für 32-Bit.

Fügen Sie einfach -I/usr/include/c++/4.6/i686-linux-gnu oder -I/usr/include/c++/4.6/i686-linux-gnu/64 oder was auch immer Sie für Ihre Plattform benötigen, hinzu.

29
rodrigo

Es hängt damit zusammen, wie clang ++ die Header-Dateien durchsucht.

Ein Beispiel-Patch für Fedora 15, 4 Monate zuvor, finden Sie hier .

Siehe Red Hat Bugzilla post für weitere Informationen. 

0
Coren