[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

20010330: netCDF C++ interface build failure on AIX 4.3.3



>From: James Kelly <address@hidden>
>Organization: BoM
>Keywords: 200103300735.f2U7ZUL17695 McIDAS-X netCDF

James,

Earlier today you noted:

>We are having trouble compiling McIDAS 7.704 on AIX 4.3.3, and the problem
>appears to be similar to the HPUX-11 issue raised earlier.

The problem that your log output presents is specific to the build of
the C++ interface in the netCDF version included with McIDAS-X.  The
version of the netCDF that is bundled with McIDAS-X is not the latest
Unidata an release in which the C++ 'friend attribute' problem has been
fixed.  This versionitis problem is understandable given that the
release that addresses your was only made very recently,

Given that McIDAS does not need the C++ interface to the netCDF for any
of its applications, the workaround is very simple:  define the Unix CXX
environment variable to be blank _before_ configure is run for netCDF
during the McIDAS build process.

I present a list of recommended environment variable definitions for
the netCDF in online documentation for Unidata McIDAS:

Notes and Warnings:
http://www.unidata.ucar.edu/packages/mcidas/770/mcx/warnings_mcx.html

Here is the section of recommended environment settings for AIX (the
syntax given is for C shell users):

AIX gale 3 4 001330614C00
    setenv CC xlc
    setenv CPPFLAGS -DNDEBUG
    setenv CFLAGS -O
    setenv FC xlf
    setenv FFLAGS -O
    setenv CXX

After one defines these enviornment variables as the user 'mcidas', s/he
needs to:

cd mcidas7.7x/netcdf
make distclean

(7.7x needs to be replaced by the appropriate directory for your distribution,
7.704 in your case).

After this, you can restart your McIDAS build which should proceed without
error (at least for the netCDF portion).  For Unidata users, this would mean:

cd ~mcidas/mcidas7.x/src
make

Please let me know if the above procedure does not work for you.

Tom

>I see that 4.3.3 is not officially supported either (only AIX 4.3.1). This is
>very sad, because AIX 4.3.3 is the first version which supports Java 2 (and a
>bunch of other things), and one we want to migrate to on our operational
>systems.
>
>Unfortunately migrating from AIX 4.3.1 to 4.3.3 involves upgrading the
>compiler....
>xlc 3.1.4 is not supported on AIX 4.3.3, and you need to upgrade to xlc 3.6 or
>better.
>
>However xlc 3.6 is no longer available from IBM and the compiler we have been
>supplied with is "Visual Age for C" Version 5.0.
>
>For your information, a partial listing of the compile output follows (where
>we have linked "xlc" to the new compiler /usr/vac/bin/xlc):

>Regards,
>James
>
>Making `all' in directory /d1/licsw/mcidas/mcidas7.704/netcdf/ncdump
>
>        xlc -c -O -I../libsrc  -DNDEBUG ncdump.c
>        xlc -c -O -I../libsrc  -DNDEBUG vardata.c
>    1500-030: (I) INFORMATION: vardata: Additional optimization may be
>attained by recompiling and specifying MAXMEM option with a value
>greater than 2048.
>        xlc -c -O -I../libsrc  -DNDEBUG dumplib.c
>        xlc -o ncdump -O  ncdump.o vardata.o dumplib.o -L../libsrc
>- -lnetcdf
>Target "all" is up to date.
>
>Returning to directory /d1/licsw/mcidas/mcidas7.704/netcdf
>
>
>Making `all' in directory /d1/licsw/mcidas/mcidas7.704/netcdf/ncgen
>
>        xlc -c -O -I../libsrc -I.  -DNDEBUG main.c
>        xlc -c -O -I../libsrc -I.  -DNDEBUG load.c
>    1500-030: (I) INFORMATION: f_var_init: Additional optimization may
>be attained by recompiling and specifying MAXMEM option with a value
>greater than 2048.
>        xlc -c -O -I../libsrc -I.  -DNDEBUG ncgentab.c
>"/usr/ccs/bin/yaccpar", line 5.1: 1506-732 (W) #pragma ident is not
>supported on the target platform.
>    1500-030: (I) INFORMATION: yy_get_next_buffer: Additional
>optimization may be attained by recompiling and specifying MAXMEM option
>with a value greater than 2048.
>        xlc -c -O -I../libsrc -I.  -DNDEBUG escapes.c
>        xlc -c -O -I../libsrc -I.  -DNDEBUG getfill.c
>        xlc -c -O -I../libsrc -I.  -DNDEBUG init.c
>        xlc -c -O -I../libsrc -I.  -DNDEBUG genlib.c
>    1500-030: (I) INFORMATION: cstring: Additional optimization may be
>attained by recompiling and specifying MAXMEM option with a value
>greater than 2048.
>        xlc -o ncgen -O  main.o load.o ncgentab.o escapes.o  getfill.o
>init.o genlib.o ../libsrc/libnetcdf.a
>Target "all" is up to date.
>
>Returning to directory /d1/licsw/mcidas/mcidas7.704/netcdf
>
>
>Making `all' in directory /d1/licsw/mcidas/mcidas7.704/netcdf/cxx
>
>        xlC -c -O  -I../libsrc  -DNDEBUG netcdf.cc
>"netcdf.hh", line 154.10: 1540-0133 (S) The attributes "friend" are not
>allowed.
>"netcdf.hh", line 361.10: 1540-0133 (S) The attributes "friend" are not
>allowed.
>"netcdf.hh", line 401.10: 1540-0133 (S) The attributes "friend" are not
>allowed.
>make: 1254-004 The error code from the last command is 1.
>
>
>Stop.
>make: 1254-004 The error code from the last command is 1.
>
>
>Stop.
>make: 1254-004 The error code from the last command is 2.
>
>
>Stop.
>make: 1254-004 The error code from the last command is 2.
>
>
>Stop.
>./mcidas7.704.sh: ERROR: 'make' failed
>
>Matthew Jochum wrote:
>
>> Hey McIDAS folk,
>>     Has anyone seen these errors when compiling McIDAS?  I'm running
>> HPUX 11 for reference.  <gasp ... not an un-supported OS >
>>
>>         c89 -c  -I.   ncio.c
>> cc: "posixio.c", line 115: error 1574: Unknown size for "sb".
>> cc: "posixio.c", line 118: error 1530: Undefined struct or union.
>> cc: "posixio.c", line 118: error 1563: Expression in if must be scalar.
>> cc: "posixio.c", line 255: error 1588: "EPERM" undefined.
>> cc: "posixio.c", line 278: error 1588: "E2BIG" undefined.
>> cc: "posixio.c", line 288: error 1588: "ENOMEM" undefined.
>> cc: "posixio.c", line 477: error 1588: "EPERM" undefined.
>> cc: "posixio.c", line 519: error 1588: "ENOMEM" undefined.
>> cc: "posixio.c", line 571: error 1588: "EPERM" undefined.
>> cc: "posixio.c", line 695: error 1588: "ENOMEM" undefined.
>> cc: "posixio.c", line 762: error 1588: "EPERM" undefined.
>> cc: "posixio.c", line 788: error 1588: "EPERM" undefined.
>> cc: "posixio.c", line 825: error 1588: "ENOMEM" undefined.
>> cc: "posixio.c", line 1017: error 1588: "ENOMEM" undefined.
>> cc: "posixio.c", line 1117: error 1588: "O_RDWR" undefined.
>> cc: "posixio.c", line 1117: error 1588: "O_CREAT" undefined.
>> cc: "posixio.c", line 1127: error 1588: "EINVAL" undefined.
>> cc: "posixio.c", line 1131: error 1588: "ENOMEM" undefined.
>> cc: "posixio.c", line 1134: error 1588: "O_EXCL" undefined.
>> cc: "posixio.c", line 1136: error 1588: "O_TRUNC" undefined.
>> cc: "posixio.c", line 1212: error 1588: "O_RDWR" undefined.
>> cc: "posixio.c", line 1212: error 1588: "O_RDONLY" undefined.
>> cc: "posixio.c", line 1217: error 1588: "EINVAL" undefined.
>> cc: "posixio.c", line 1221: error 1588: "ENOMEM" undefined.
>> cc: "posixio.c", line 1284: error 1588: "EINVAL" undefined.
>> *** Error exit code 1
>>
>> Thanks,
>> Matt
>>
>> --
>> Gaim Instant Message: DOHCMatt
>>         "There are two major products that come from Berkeley: LSD and UNIX.
>>                 We don't believe this to be a coincidence."
>>                           -Jeremy S. Anderson
>
>- --
>James Kelly
>Regional Computing and Distributed Systems        Bureau of Meteorology
>PO Box 1289K                                  Melbourne 3001, Australia
>Phone: 61-3-9669-4724 Fax: 61-3-9669-4128     Email: address@hidden
>
>
>
>------- End of Forwarded Message
>

Tom Yoksas

>From address@hidden Mon Apr  2 20:13:58 2001
>To: address@hidden
>CC: address@hidden, address@hidden,
>   Rob Petrini <address@hidden>
>Subject: Re: compiling McIDAS 7.704 on AIX 4.3.3

Hi Tom,

Many thanks, this works.

Using ksh, I needed to do the following:
export CPPFLAGS=-DNDEBUG
export FC=xlf
export CFLAGS=-O
export FFLAGS=-O
export CXX=

Then the compile proceeded normally as you suggested it would.

Cheers,

Jame