I'm trying to get Omni (from CVS head) compiled on my Debian Linux
box. First tried building with gcc 2.95.4 (this was before
discovering docs/Omni.readme.1st). That didn't work because of the
documented problem of non-external linkage of member functions in
nested class definitions. (Is there a switch to get around this? I
couldn't find one.)
So I installed gcc 3.0.3, since that is the only other version of gcc
in Debian woody at the moment. This produces reams of compile errors,
mostly because none of the Omni source references C++ standard
template library classes via the std:: namespace. And the gcc team
evidently got rid of -fno-honor-std recently, so I've sprinkled 'using
namespace std;' about the places that needed it.
But now I've hit something more difficult: PrintDevice.cpp fails to
compile. PrintDevice::setOutputStream() tries to instantiate a
std::filebuf object from an integer (i.e. created by UNIX's open())
file descriptor. Evidently the libstdc++ that ships with gcc 3.0.3
doesn't support this any more; the choices are another filebuf object
or a stdio FILE*.
I will fix this and keep moving on, but this is getting tedious. Does
anyone out there have patches or hints on how to get Omni compiled
with either of these gcc/g++ versions?
thanks for any help you can provide,
-Andrew
|