multiple definition of `abgcdp' during NCL build

From: Slatest, Leonard A <slatest_at_nyahnyahspammersnyahnyah>
Date: Wed, 30 Jan 2008 19:06:50 -0500

Hi. I am installing ncl_ncarg-5.0.0 on the front end node (fen) of our
Blue Gene/L (SUSE Linux with powerpc chip). I get these messages during
the build:

 

: multiple definition of `abgcdp'

: multiple definition of `adgcdp'

 

Here is a more extended excerpt for the first of these messages, from a
transcript of my build:

 

************************************************************************
*********

 

xlc -qstrict -qfullpath -qmaxmem=-1 -D_FILE_OFFSET_BITS=64
-D_LARGEFILE_SOURCE -O3 -o ncl Ncl.o io.o NclHLUObj.o scanner.o
parser.o MathFuncs.o NclTypedouble.o NclTypefloat.o
NclTypeint.o NclTypelogical.o NclTypelong.o
NclTypeobj.o NclTypeshort.o NclTypestring.o
NclTypebyte.o NclTypechar.o TypeSupport.o
NclMultiDValData.o AddFileFormats.o AttSupport.o DataSupport.o
FileSupport.o Formats.o GetGrids.o InitData.o
Memory.o NclAtt.o NclCCM.o NclCoordVar.o NclData.o
NclFile.o NclFileVar.o NclGRIB.o NclHDF.o
NclMultiDValnclfileData.o NclNetCdf.o
NclOneDValCoordData.o NclType.o NclTypelist.o
NclVar.o VarSupport.o ctoiee.o date.o qu2reg3.o
rowina3.o scm0.o ncepcode.o NclGRIB2.o AddBuiltIns.o AddHLUObjs.o
AddIntrinsics.o Execute.o Machine.o OpsFuncs.o
Printtoken.o SrcTree.o Symbol.o Translate.o
NclHLUVar.o HLUSupport.o NclMultiDValHLUObjData.o
BuiltInSupport.o BuiltInFuncs.o HLUFunctions.o
yywrap.o craybin.o complete.o editline.o sysunix.o
ListSupport.o NclList.o NclMultiDVallistData.o
fortranio.o -L../../.././ni/src/lib/nfp -lnfp
-L../../.././ni/src/lib/nfpfort -lnfpfort -L../../.././ni/src/lib/hlu
-lhlu -L../../.././ncarg2d/src/libncarg -lncarg
-L../../.././ncarg2d/src/libncarg_gks -lncarg_gks
-L../../.././common/src/libncarg_c -lncarg_c -L../../.././ngmath/src/lib
-lngmath -L/gpfs/scratch2/slatest/ncl_ncar_5.0.0-final-o3qstrict/lib
-L/usr/X11R6/lib -L/opt/ibmmath/lib
-L/gpfs/scratch2/slatest/ncl_ncar_5.0.0-final-o3qstrict/g2clib-1.0.5
-L/gpfs/scratch2/slatest/ncl_ncar_5.0.0-final-o3qstrict/udunit-fen-final
/udunits-1.12.4/lib
-L/gpfs/scratch2/slatest/ncl_ncar_5.0.0-final-o3qstrict/netcdf-final/net
cdf-3.6.2/lib
-L/gpfs/scratch2/slatest/ncl_ncar_5.0.0-final-o3qstrict/jasper-1.900.1/l
ib
-L/gpfs/scratch2/slatest/ncl_ncar_5.0.0-final-o3qstrict/hdf4-o3qstrict/H
DF4.2r1/mfhdf/libsrc
-L/gpfs/scratch2/slatest/ncl_ncar_5.0.0-final-o3qstrict/hdf4-o3qstrict/H
DF4.2r1/hdf/src -lnetcdf -lmfhdf -ldf -ljpeg -lz -ludunits -lgrib2c
-ljasper -L../../.././external/sphere3.1_dp -lsphere3.1_dp
-L../../.././external/fftpack5_dp -lfftpack5_dp
-L../../.././external/lapack -llapack_ncl -L../../.././external/blas
-lblas_ncl -lX11 -lXext -L/opt/ibmcmp/xlf/bg/10.1/lib -lxlfmath -lxlf90
-lm -lm -ldl

../../.././ni/src/lib/hlu/libhlu.a(SphericalGeometry.o)(.text+0x0): In
function `abgcdp':

: multiple definition of `abgcdp'

../../.././ni/src/lib/nfpfort/libnfpfort.a(sg_tools.o)(.text+0x1b80):
first defined here

/usr/bin/ld: Warning: size of symbol `abgcdp' changed from 284 in
../../.././ni/src/lib/hlu/libhlu.a(SphericalGeometry.o) to 260 in
../../.././ni/src/lib/hlu/libhlu.a(SphericalGeometry.o)

************************************************************************
********

 

This multiple definition evidently arises because of the combination of
the following in libnfpfort.a (specifically the sg_tools.f contribution
to that library ):

 

DOUBLE PRECISION FUNCTION ABGCDP (AQDP,BQDP,CQDP)

 

 and the following in libhlu.a (the SphericalGeometry.c contribution to
that library):

 

double abgcdp(double*,double*,double*);

 

 

I read the following in the NCL install doc file:

 

*********************************************************************

If, however, your compiler does not append an underscore (the IBM
xlf/xlf90 compilers are

two such examples), then you need to set this macro as follows:

 

    NgCallF reg

********************************************************************

 

Regarding that, I had confirmed earlier in the build process that the
$NCARG/config file that the build uses is "LINUX":

 

SYSTEM_INCLUDE = "LINUX"

 

and NgCallF is in fact set correctly in that file. (My LINUX file is
listed in its entirety below).

 

So I'm puzzled by the multiple definition error. I've googled this but
can't find anyone who has obtained this particular

multiple definition error.

 

A second question: I thought the LINUX file that I had constructed (see
below), derived from templates in the NCL distribution, would do a
32-bit build, yet in the build transcript I still see -Dppc64 in some
spots, e.g. in the following build session excerpt. Why is -Dppc64 being
used in the build, or is there some reason I shouldn't worry about it? :

 

************************************************************************
**********************************

make[5]: Entering directory
`/gpfs/scratch2/slatest/ncl_ncar_5.0.0-final-o3qstrict/ncl_ncarg-5.0.0/n
carview/src/lib/libncarg_ras'

makedepend -s "# DO NOT DELETE" -- -I../../../.././include
-I/usr/X11R6/include -I/opt/ibmmath/include
-I/gpfs/scratch2/slatest/ncl_ncar_5.0.0-final-o3qstrict/g2clib-1.0.5
-I/gpfs/scratch2/slatest/ncl_ncar_5.0.0-final-o3qstrict/udunit-fen-final
/udunits-1.12.4/include
-I/gpfs/scratch2/slatest/ncl_ncar_5.0.0-final-o3qstrict/netcdf-final/net
cdf-3.6.2/include
-I/gpfs/scratch2/slatest/ncl_ncar_5.0.0-final-o3qstrict/jasper-1.900.1/i
nclude
-I/gpfs/scratch2/slatest/ncl_ncar_5.0.0-final-o3qstrict/hdf4-o3qstrict/H
DF4.2r1/hdf/src
-I/gpfs/scratch2/slatest/ncl_ncar_5.0.0-final-o3qstrict/hdf4-o3qstrict/H
DF4.2r1/mfhdf/libsrc -DBuildRasterHDF -D_IBMR2 -DBuildRasterHPPCL
-DBuildRasterNrif -DBuildRasterSun -DBuildRasterXWD
-DBuildRasterAVS -DBuildRasterSGI -DBuildRasterAbekas
-DBuildRasterBinary -DBuildRasterYUV -DNGTMPDIR='"tmp"'
-Dppc64 -DIBM -DSYSV -D_POSIX_SOURCE -D_XOPEN_SOURCE -DNeedFuncProto --
raster.c cleartext.c error.c misc.c palette.c dither.c
resample.c composite.c ntsc.c color.c rasterop.c generic.c
memory.c hdf.c hppcl.c nrif.c sunraster.c xwd.c avsraster.c
sgiraster.c abekas.c binary.c yuv.c

************************************************************************
*******************************

 

Some more background information:

 

I'm building everything to run on the fen, not the compute nodes, i.e.
I'm using native compilers, not cross compilers. Also, the fen has a
64-bit architecture and

the build I am attempting is a 32-bit build. I previously did 32-bit
builds for the external software e.g. HDF4 .

 

I set the following variables prior to the build:

 

export F77=xlf

export FC=xlf

export F90=xlf90

export CXX=xlC

export CC=xlc

 

 export NCARG=/gpfs/scratch2/slatest/ncl_ncar_5.0.0-final-o3qstrict

 

and the library and include paths respectively that I provided during
the configure are:

 

/usr/X11R6/lib
/gpfs/scratch2/slatest/ncl_ncar_5.0.0-final-o3qstrict/g2clib-1.0.5
/gpfs/scratch2/slatest/ncl_ncar_5.0.0-final-o3qstrict/udunit-fen-final/u
dunits-1.12.4/lib
/gpfs/scratch2/slatest/ncl_ncar_5.0.0-final-o3qstrict/netcdf-final/netcd
f-3.6.2/lib
/gpfs/scratch2/slatest/ncl_ncar_5.0.0-final-o3qstrict/jasper-1.900.1/lib
/gpfs/scratch2/slatest/ncl_ncar_5.0.0-final-o3qstrict/hdf4-o3qstrict/HDF
4.2r1/mfhdf/libsrc
/gpfs/scratch2/slatest/ncl_ncar_5.0.0-final-o3qstrict/hdf4-o3qstrict/HDF
4.2r1/hdf/src/

 

and

 

/usr/X11R6/include
/gpfs/scratch2/slatest/ncl_ncar_5.0.0-final-o3qstrict/g2clib-1.0.5
/gpfs/scratch2/slatest/ncl_ncar_5.0.0-final-o3qstrict/udunit-fen-final/u
dunits-1.12.4/include
/gpfs/scratch2/slatest/ncl_ncar_5.0.0-final-o3qstrict/netcdf-final/netcd
f-3.6.2/include
/gpfs/scratch2/slatest/ncl_ncar_5.0.0-final-o3qstrict/jasper-1.900.1/inc
lude
/gpfs/scratch2/slatest/ncl_ncar_5.0.0-final-o3qstrict/hdf4-o3qstrict/HDF
4.2r1/hdf/src
/gpfs/scratch2/slatest/ncl_ncar_5.0.0-final-o3qstrict/hdf4-o3qstrict/HDF
4.2r1/mfhdf/libsrc

 

 

My complete LINUX file appears below. Do you see any changes I should
make?

 

Thanks,

Len (slatest_at_bnl.gov)

 

 

Here is the complete LINUX file:

 

*

 * $Id: LINUX.ppc64.xl,v 1.1 2007/10/06 02:05:31 haley Exp $

 */

/***********************************************************************
*

*
*

* Copyright (C) 2005
*

* University Corporation for Atmospheric Research
*

* All Rights Reserved
*

*
*

************************************************************************
/

/*

 * File: LINUX.ppc32

 *

 * Author: Richard Grubin

 * National Center for Atmospheric Research

 * PO 3000, Boulder, Colorado

 *

 * Date: Sun May 1 16:56:33 MDT 2005

 *

 * Description: This file contains all the directives needed to

 * tell ymake how to build NCAR Graphics on a PPC 32-bit LINUX

 * system using the xlf/xlc compilers

 */

#define HdfDefines -D_IBMR2

#define StdDefines -DSYSV -D_POSIX_SOURCE -D_XOPEN_SOURCE

#define CCompiler xlc

#define FCompiler xlf

#define CcOptions -qstrict -qfullpath -qmaxmem=-1

#define FcOptions -qstrict -qfullpath

#define LdCommand ld -melf32ppc

#define LdRelCommand ld -melf32ppc

#define ArCommand ar

#define COptimizeFlag -O3

#define FOptimizeFlag -O3

#define Cstatic -bnso

#define Cdynamic -bso

#define CtoFLibraries -L/opt/ibmcmp/xlf/bg/10.1/lib -lxlfmath -lxlf90
-lm

#define NgCallF reg

#define CppCommand '/usr/bin/cpp -traditional'

#define XToolLibrary -lXt -lSM -lICE

#define BuildShared NO

#define XLibrary -lX11 -lXext

 

#define ArchRecLibSearch -L/usr/X11R6/lib

#define ArchRecIncSearch -I/usr/X11R6/include

 

 

/*************** Redefine Macros from Rules
********************************/

 

/*

 * Macro: MakeDir

 *

 * Description: This rule creates a directory - if a parent dir doesn't
exist

 * it attempts to create it.

 */

#ifndef MakeDir

#define MakeDir(dir) @if (test ! -d dir); then ($(MKDIRHIER) dir); fi

#endif

 

_______________________________________________
ncl-install mailing list
ncl-install_at_ucar.edu
http://mailman.ucar.edu/mailman/listinfo/ncl-install
Received on Wed Jan 30 2008 - 17:06:50 MST

This archive was generated by hypermail 2.2.0 : Thu Jan 31 2008 - 22:51:52 MST