2011/8/21 Maciej Bliziński <maciej@xxxxxxxxxxx>: > 22203: stat64("/opt/csw/lib/gcc/sparc-sun-solaris2.10/4.6.1/include/iosfwd.gch", > 0xFFBFF038) Err#2 ENOENT > 22203: open64("/opt/csw/lib/gcc/sparc-sun-solaris2.10/4.6.1/include/iosfwd", > O_RDONLY|O_NOCTTY) Err#2 ENOENT > 22203: stat64("/opt/csw/gcc4/include/iosfwd.gch", 0xFFBFF038) Err#2 ENOENT > 22203: open64("/opt/csw/gcc4/include/iosfwd", O_RDONLY|O_NOCTTY) Err#2 ENOENT > 22203: stat64("/opt/csw/lib/gcc/sparc-sun-solaris2.10/4.6.1/include-fixed/iosfwd.gch", > 0xFFBFF038) Err#2 ENOENT > 22203: open64("/opt/csw/lib/gcc/sparc-sun-solaris2.10/4.6.1/include-fixed/iosfwd", > O_RDONLY|O_NOCTTY) Err#2 ENOENT > 22203: stat64("/usr/include/iosfwd.gch", 0xFFBFF038) Err#2 ENOENT > 22203: open64("/usr/include/iosfwd", O_RDONLY|O_NOCTTY) Err#2 ENOENT > > Where is the problem - are the header files misplaced, or is g++ > looking in the wrong place? I compared the new build with the previous build of gcc (4.3.3), and found how does gcc find this header file. The files in the old build are in the same place, but gcc is able to find them: 6414: stat("/opt/csw/gcc4/lib/gcc/sparc-sun-solaris2.8/4.3.3/../../../../include/c++/4.3.3/iosfwd.gch", 0xFFBFF2B8) Err#2 ENOENT 6414: open("/opt/csw/gcc4/lib/gcc/sparc-sun-solaris2.8/4.3.3/../../../../include/c++/4.3.3/iosfwd", O_RDONLY|O_NOCTTY) = 4 Interestingly, it looks like the include files are found underneath what was probably configured as libdir (PREFIX/lib). In my build, I've defined prefix to /opt/csw/gcc4, but I have set libdir to /opt/csw/lib. How does gcc get the idea to search /opt/csw/gcc4/lib/gcc/sparc-sun-solaris2.8/4.3.3/../../../../include/c++/4.3.3 for the include files? Is it defined in a file such as config.h? Maciej