[Ecls-list] [ANN] ECL 9.12.3
Semih Cemiloglu
Semih.Cemiloglu at nec.com.au
Tue Dec 22 04:31:47 UTC 2009
Dear David,
The build issue I'm experiencing has been solved (see previous my previous posting).
Thank you for reminding this. According to Sun Studio documentation:
From Sun Studio 12 Update 1 C++ Users Guide (Doc id 820-7599)
page 256:
The stlport4, Cstd, and iostream libraries provide their own implementation of I/O streams.
Specifying more than one of these with the -library option can result in undefined program
behaviour. For more information about using STLport’s implementation
page 169:
STLport is binary incompatible with the default libCstd. If you use the STLport
implementation of the standard library, then you must compile and link all files, including
third-party libraries, with the option -library=stlport4. This means, for example, that
you cannot use the STLport implementation and the C++ interval math library
libCsunimath together. The reason for this is that libCsunimath was compiled with the
default library headers, not with STLport.
My preference is to stay with libCstd and retain easy access to all native Sun libraries.
From experience, the incompatibilities or non-standard behaviour in libCstd-STL seems trivial and can easily be remedied at the call-site (of STL functions) or by using some kind if adaptation namespace (i.e. sun_std::distance() etc).
Thanks, regards,
Semih Cemiloglu
-----Original Message-----
From: Dr. David Kirkby [mailto:david.kirkby at onetel.net]
Sent: Friday, 18 December 2009 6:32 PM
To: Semih Cemiloglu
Cc: Juan Jose Garcia-Ripoll; list-ecl
Subject: Re: [Ecls-list] [ANN] ECL 9.12.3
Semih Cemiloglu wrote:
> Hi,
>
>
>
> I’m unable to build ECL 9.12.3 on OpenSolaris:
>
>
>
> $ export CC="cc -xc99=all"
>
> $ export CXX=CC
You are I assume using the Sun C++ compiler, not the GNU one. The following
might not be the cause of your problem, but it just might be.
It recently came to my attention that the Sun C++ compiler ships with two
libraries that implement the C++ standard library: libCstd and libstlport.
Basically the standard for C++ has changed in an incompatible way, so to
maintain backward compatibility, by default the Sun C++ compiler builds with a
libCstd, which does not support all the features of the standard library.
In order to get a library which conforms more closely to the C++ standard, one
should use the libstlport library. One needs to add the option -library=stlport4
for this. If you have multiple objects, they all must be compiled with this
option - you can't mix the two libraries. See:
http://developers.sun.com/solaris/articles/cmp_stlport_libCstd.html
PS
1) HP do likewise with their compiler on HP-UX.
2) I don't know if it's true, but according to Wikipedia, there is no compiler
which fully supports the C++ standard. Sun certainly do not claim to, but
libstlport is closer to the latest standard than libCstd.
Dave
This email may be confidential and/or privileged. Only the intended recipient may access or use it. If you are not the intended recipient, please delete this email and notify NEC Australia Pty Ltd promptly. NEC uses antivirus software but excludes all liability for viruses or similar in any attachment.
Please consider our environment before printing this email.
More information about the ecl-devel
mailing list