From Bugzilla Helper: User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5b) Gecko/20030904 Firebird/0.6.1+ StumbleUpon/1.83 Description of problem: The C++ compiler cannot locate the C++ headers. libstdc++-ssa-devel is installed. Version-Release number of selected component (if applicable): gcc-c++-ssa-3.5ssa-0.20030801.36 How reproducible: Always Steps to Reproduce: Run g++-ssa -o t t.cc with this code #include <iostream> int main () { std::cout << "hello world" << std::endl; } Actual Results: t.cc:1:20: iostream: No such file or directory t.cc: In function `int main()': t.cc:5: error: `cout' is not a member of `std' t.cc:5: error: `endl' is not a member of `std' Expected Results: Clean compile Additional info: The compiler looks at the following places for the file: /usr/local/include/iostream.gch /usr/local/include/iostream /usr/include/iostream.gch /usr/include/iostream That's it. No other files are looked at.
Jakub suggested running this: $ g++-ssa -v -E -xc++ /dev/null 2>&1 | grep include ignoring nonexistent directory "/lib/include/c++/3.5-tree-ssa" ignoring nonexistent directory "/lib/include/c++/3.5-tree-ssa/ia64-redhat-linux-gnu" ignoring nonexistent directory "/lib/include/c++/3.5-tree-ssa/backward" ignoring nonexistent directory "/lib/ia64-redhat-linux-gnu/include" #include "..." search starts here: #include <...> search starts here: /usr/local/include /lib/ssa/gcc-lib/ia64-redhat-linux-gnu/3.5-tree-ssa/include /usr/include I.e., it's "just" the wrong prefix with which gcc is compiled.
This appears to be caused by cc1plus looking for its /usr/include/c++ headers by means of relative traversal from the gcc-lib directory: /lib/ssa/gcc-lib/i386-redhat-linux-gnu/3.5-tree-ssa/../../../../include/c++/3.5-tree-ssa If $libdir=/usr/lib, this works If $libdir=/lib/ssa, this works not
I hacked the gcc-ssa.spec file to force g++ includes into /lib/ssa. The new .37 release should work.
I tested .38 and it indeed works, at least for my test cases.