g++ 4.6 issue no <bits/c++config.h> file as required by the header cstring
The file bits/c++config.h
is the platform specific include relative to the current compiler, so it is hidden in another directory, searched by default by g++, but not by clang++, as it seems.
In my machine, running locate c++config.h
gives the following (relevant) files:
/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
The first one is for 64-bits and the second one for 32-bits.
So just add -I/usr/include/c++/4.6/i686-linux-gnu
or -I/usr/include/c++/4.6/i686-linux-gnu/64
or whatever you need for your platform.
A. K.
llvm + clang contributor Compiler Engineer, Facebook, California Twitter: hiraditya
Updated on July 09, 2022Comments
-
A. K. almost 2 years
There is no file called
bits/c++config.h
in the c++ include directory which is required by thecstring
header file. But when I include the the headercstring
and compile withg++
, it does not give me error. The problem occurred when I tried to compile the program withclang++
compiler in the following way.$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>
I am using g++ 4.6.1 on Ubuntu 11.04
What went wrong?
-
A. K. over 12 yearsyes i found out it is there in the same directory what you got. thanks
-
A. K. over 12 yearsWhile installing clang I did edit the Frontend/InitHeaderSearch.cpp file to include the required directories to address the problem. Still I got this error. For now, I have added all the required paths in my CMakeLists.txt to address this issue.
-
Brien Coffield almost 11 yearsIf you don't have the appropriate c++config.h for your architecture, install libstdc++-devel from your repository.
-
Eugene B almost 11 yearsin some cases this might not be enough: sometimes you need -I/usr/include/c++/4.6/i686-linux-gnu/c++/4.6 I use -I/usr/include/i386-linux-gnu/c++/4.7/ for my machine and 4.7 version of gcc and it all works