[GRASS-dev] [bug #3224] (grass) r.terraflow does not compile
(Solaris2.9/Sparc)
Hamish
hamish_nospam at yahoo.com
Tue Oct 3 21:36:42 EDT 2006
Markus Neteler via RT wrote:
> Report from Harri:
>
> after a very long time, I managed to get back into compiling GRASS on
> Solaris2.9/Sparc.
>
> r.terraflow:
>
> Does not compile, complains about:
> "direction.h", line 50: Error: Could not open include file<ostream.h>.
>
> Which in Solaris is <iostream.h> (or <iostream> for standard mode
> libraries which use namespaces.) The same goes also for
> IOStream/include/empq_impl.h
> The test present in both these cases about whether the compiler is GNU 3
> with subnumber 1 or larger excludes the new GNU 4 compilers, which is
> probably not the intention. It also excludes the Solaris CC, and the
> system currently recommends using <iostrem> while <iostrem.h> is not
> standard and deprecated.
>
> Then, in the main.cc on line 333:
> "main.cc", line 333: Error: The function "ctime_r" must have a
> prototype."
common.cc starts with:
#include <sys/types.h>
#include <sys/mman.h>
#include <ctype.h>
#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)
#include <ostream>
#else
#include <ostream.h>
#endif
#include <iostream>
using namespace std;
#include "common.h"
gcc (g++) 3.0 shipped with headers without the ".h", except for ostream.
all others dropped the ".h" at gcc 2.95?
after gcc 3.1 all ".h" are gone.
maybe we need to extend these tests to be less gcc centric.
"ostream" != "iostream"
$ ll /usr/include/c++/3.3/ | grep stream
-rw-r--r-- 1 root root 24834 May 25 2005 fstream
-rw-r--r-- 1 root root 3041 May 25 2005 iostream
-rw-r--r-- 1 root root 27292 May 25 2005 istream
-rw-r--r-- 1 root root 18353 May 25 2005 ostream
-rw-r--r-- 1 root root 20575 May 25 2005 sstream
-rw-r--r-- 1 root root 31972 May 25 2005 streambuf
but iostream #includes both <istream> and <ostream>
Hamish
More information about the grass-dev
mailing list