compiling libdap-3.6.2 on Solaris 10 x86

James Gallagher jhrg at mac.com
Fri Feb 2 11:00:22 PST 2007


On Feb 2, 2007, at 7:04 AM, Dale Castle wrote:

> Hello,
>
> 	I noticed the posted binary is only for Solaris/SPARC, so I tried  
> compiling the source on Solaris 10 x86 with Sun Studio 11 compilers.
> 	Here are my flags:
>
> -xO3 -mt -fsimple=1 -ftrap=%none -nofstore -xbuiltin=%all -xlibmil - 
> xlibmopt -xtarget=opteron -xregs=no%frameptr
>

Dale, What about adding the -features=tmplrefstatic option and seeing  
if the compiler will grok the code. I think what's happening here is  
that the compiler is supporting several versions of C++, and the  
newer versions require feature-specific switches.

Bummer, but we've gotten our code to build with some fairly odd  
compilers (well, to be honest, other people have done most of the  
work ;-) ).

Let me know if this helps.

James

> 	There was a conflict with other libraries already compiled in  
> 32bit. That's why I'm not specifying amd64.
>
> 	After taking out -xarch=amd64, I was able to get configure to  
> produce the attached Makefile. When running make, it failes with  
> the following output. Any help is appreciated.
>
> - Dale
>
> Dale Castle
> Virginia Institute of Marine Science
> 804-684-7077
> dale at vims.edu
>
> "Operators.h", line 80: Error: Reference to static dods_max(int,  
> int) not allowed in template static USCmp<unsigned char, short>::eq 
> (unsigned char, short), try using -features=tmplrefstatic.
> "Operators.h", line 171:     Where: While instantiating "static  
> USCmp<unsigned char, short>::eq(unsigned char, short)".
> "Operators.h", line 171:     Where: Instantiated from rops<unsigned  
> char, short, USCmp<unsigned char, short>>(unsigned char, short, int).
> "Byte.cc", line 233:     Where: Instantiated from non-template code.
> 1 Error(s) detected.
> *** Error code 1
> make: Fatal error: Command failed for target `Byte.lo'
> Current working directory /export/home/dale/libdap/libdap-3.6.2
> *** Error code 1
> The following command caused the error:
> failcom='exit 1'; \
> for f in x $MAKEFLAGS; do \
>   case $f in \
>     *=* | --[!k]*);; \
>     *k*) failcom='fail=yes';; \
>   esac; \
> done; \
> dot_seen=no; \
> target=`echo all-recursive | sed s/-recursive//`; \
> list='gl . tests'; for subdir in $list; do \
>   echo "Making $target in $subdir"; \
>   if test "$subdir" = "."; then \
>     dot_seen=yes; \
>     local_target="$target-am"; \
>   else \
>     local_target="$target"; \
>   fi; \
>   (cd $subdir && make  $local_target) \
>   || eval $failcom; \
> done; \
> if test "$dot_seen" = "no"; then \
>   make  "$target-am" || exit 1; \
> fi; test -z "$fail"
> make: Fatal error: Command failed for target `all-recursive'
> Current working directory /export/home/dale/libdap/libdap-3.6.2
> *** Error code 1
> make: Fatal error: Command failed for target `all'
> <Makefile>

--
James Gallagher                jgallagher at opendap.org
OPeNDAP, Inc                   406.723.8663



More information about the Opendap-tech mailing list