Red Hat Bugzilla – Bug 104104
C++ compiler doesn't find libstdc++ headers
Last modified: 2007-11-30 17:06:58 EST
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5b) Gecko/20030904
Description of problem:
The C++ compiler cannot locate the C++ headers. libstdc++-ssa-devel is installed.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
Run g++-ssa -o t t.cc with this code
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
The compiler looks at the following places for the file:
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:
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:
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.