[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