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