when compiling this program with gcc 4.3 snapshot 2007/04/27, #include <iostream> int main(){ std::cout << "Hello world!" << std::endl; }
cc1plus failed to locate the headers stddef.h and stdargs.h: Using built-in specs. Target: x86_64-linux Configured with: ../gcc-4.3-20070427/configure --prefix=/home/kunzjacq/gcc --enable-threads=posix --with-arch=opteron --enable-languages=c,c++ --enable-shared --enable-long-long --disable-multilib x86_64-linux --disable-nls --with-mpfr=/home/kunzjacq/gcc Thread model: posix gcc version 4.3.0 20070427 (experimental) /home/kunzjacq/gcc/libexec/gcc/x86_64-linux/4.3.0/cc1plus -quiet -v -D_GNU_SOURCE solver.cpp -quiet -dumpbase solver.cpp -mtune=generic -march=opteron -auxbase solver -version -o /tmp/ccaGy1gx.s ignoring duplicate directory "/home/kunzjacq/gcc/include" ignoring duplicate directory "/home/kunzjacq/gcc/lib/gcc/x86_64-linux/4.3.0/include" ignoring nonexistent directory "/home/kunzjacq/gcc/lib/gcc/x86_64-linux/4.3.0/../../../../x86_64-linux/include" #include "..." search starts here: #include <...> search starts here: /home/kunzjacq/gcc/include /home/kunzjacq/gcc/lib/gcc/x86_64-linux/4.3.0/include/ /home/kunzjacq/gcc/lib/gcc/x86_64-linux/4.3.0/../../../../include/c++/4.3.0 /home/kunzjacq/gcc/lib/gcc/x86_64-linux/4.3.0/../../../../include/c++/4.3.0/x86_64-linux /home/kunzjacq/gcc/lib/gcc/x86_64-linux/4.3.0/../../../../include/c++/4.3.0/backward /usr/local/include /home/kunzjacq/gcc/lib/gcc/x86_64-linux/4.3.0/include-fixed /usr/include End of search list. GNU C++ version 4.3.0 20070427 (experimental) (x86_64-linux) compiled by GNU C version 4.3.0 20070427 (experimental). GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 Compiler executable checksum: 7189601d7a27b36b7c735cebc4e5f729 In file included from /home/kunzjacq/gcc/lib/gcc/x86_64-linux/4.3.0/../../../../include/c++/4.3.0/cstdlib:48, from common.h:4, from solver.cpp:1: /home/kunzjacq/gcc/lib/gcc/x86_64-linux/4.3.0/../../../../include/c++/4.3.0/cstddef:48:25: error: stddef.h: No such file or directory In file included from /home/kunzjacq/gcc/lib/gcc/x86_64-linux/4.3.0/../../../../include/c++/4.3.0/x86_64-linux/bits/c++locale.h:50, from /home/kunzjacq/gcc/lib/gcc/x86_64-linux/4.3.0/../../../../include/c++/4.3.0/bits/localefwd.h:46, from /home/kunzjacq/gcc/lib/gcc/x86_64-linux/4.3.0/../../../../include/c++/4.3.0/ios:47, from /home/kunzjacq/gcc/lib/gcc/x86_64-linux/4.3.0/../../../../include/c++/4.3.0/ostream:45, from /home/kunzjacq/gcc/lib/gcc/x86_64-linux/4.3.0/../../../../include/c++/4.3.0/iostream:45, from common.h:6, from solver.cpp:1: /home/kunzjacq/gcc/lib/gcc/x86_64-linux/4.3.0/../../../../include/c++/4.3.0/cstdarg:48:25: error: stdarg.h: No such file or directory (...) the path "/home/kunzjacq/gcc/lib/gcc/x86_64-linux/4.3.0/include", in which the missing headers lie, are duplicated because I have set in the environment C_INCLUDE_PATH="$GCC_PATH/include:$GCC_PATH/lib/gcc/x86_64-linux/4.3.0/include" CPLUS_INCLUDE_PATH="$C_INCLUDE_PATH" where $GCC_PATH is the gcc install dir. after these definitions are removed, everything works ok. nevertheless the behavior of cc1plus is strange. I also found that changing the #include_next in #include in the files $GCC_PATH/include/c++/4.3.0/{cstddef,cstdarg} solves the problem, which is reminiscent of the following emails on the gcc mailing list: http://gcc.gnu.org/ml/gcc/2001-09/msg00032.html -- Summary: cc1plus fails to find some headers when include paths are duplicated Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: preprocessor AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: grokbrsm at free dot fr GCC build triplet: x86_64-pc-linux-gnu GCC host triplet: x86_64-pc-linux-gnu GCC target triplet: x86_64-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31763