Object Libraries, Executables, and Supported Machines/OS's

Please read the copyright, licensing, and acknowledgements page: The I/O API library is available under the Lesser Gnu Public License, version 2.1; the "tool" and example programs are available under the Gnu Public License, version 2.

The current release version of the I/O API library is Version 3.0; Version 2.2 is in maintenance only release mode, and binaries and executables are also available for its predecessor, I/O API Verison 2.1. To download source for 3,0 or 2.2, or source, binary libraries and executables for Version 2.1, please go to the I/O API Download Page.

Release Version 3.0 and 3.1 of the I/O API and the I/O -related tool and sample programs are available here:

ftp:ioapi-3.0.tar.gz
ftp:ioapi-3.1.tar.gz
in source code form. New features of these releases are documented here; build instructions are available here. Makeinclude files are available for the following platforms:

Version 2.2 of the I/O API library code is available here in source code form. New features of this release are documented here. The build procedure is the same as that for Version 2.1, documented below, except that the default object library directory is directly under the source code directory.

For each supported architecture, there are four relevant archive libraries of compiled object files:

libioapi.a
contains object files for the I/O API (both public and private routines), the coordinate and grid manipulation routines , the date and time manipulation routines , and the utility routines; it is compiled with optimization on (typically at optimization level -O2).
libioapi.debug.a
has the same contents as libioapi.a, but is compiled with optimization off and debugging symbol tables turned on.
libnetcdf.a
contains object files for the underlying netCDF library; it is compiled with optimization on (typically at optimization level -O2).
libnetcdf.debug.a
has the same contents as libnetcdf.a, but is compiled with optimization off and debugging symbol tables turned on.

If you call I/O API routines, you will need both libioapi.a and libnetcdf.a (or their debug-compiled equivalents); if you build with coupling mode enabled, you will also need libpvm3.a. If you call only coordinate and grid or date and time manipulation routines or utility routines, you will just need libioapi.a. On the MCNC Environmental Programs servers, f77-compiled I/O API Version 1 archive libraries (".a files") are available for the following list of currently-supported host architectures (these are the values of environment variable EDSS_OS, as set by the setup_edss shell script):

sn10408: Cray Y-MP/UNICOS
sn46057: Cray C-90/UNICOS
SunOS5: Sun Solaris 2.x for SPARC
IRIX5: SGI IRIX 5.x for R4xxx or later
OSF1: DEC Alpha/OSF-1
AIX: IBM RS/6000 - AIX
HP-UX: HP workstations under HP-UX
These f77-compiled Version 1 libraries can be found in the directory specified by environment variable EDSS_OS. Note that on Suns and SGIs, "f77" and "f90" are not link compatible; furthermore, there have historically been major link incompatibilities on Suns between object libraries compiled with different versions of the Sun "f77" -- in particular, link incompatibilities caused problems for every transition among versions 3.0, 3.5, 4.0. 4.1, and 4.5.

I/O API Version 3 libraries have build support for the following platforms (and supporting additional platforms generally is quite easy, following the pattern of the existing builds):

AIX
for AIX on POWER-<n> using xlc_r and xlf_r, with OpenMP support.

AIX_
As for AIX but with Feldman-style (trailing underscore) Fortran name-mangling for linker symbols.

AIXdbg
As for AIX but for debug

cray/
for UNICOS on Cray vector machines using f90

HP-UXf90
for HP-UX using f90 and c89.
Note: caution; I haven't had an HPUX system to test on for over 5 years...

IRIX5f77
For SGI IRIX 5 ("-o32" on mips-2 platforms using f77 and cc, with OpenMP support.
Not link-compatible with IRIX6*

IRIX5f90
For SGI IRIX 5 ("-o32" on mips-2 platforms using f90 and cc, with OpenMP support.
Not link-compatible with IRIX5f77 nor IRIX6*

IRIX64
For SGI IRIX 6 -64 on mips-4 platforms using f77 and cc, with OpenMP support.
Not link-compatible with IRIX5*, IRIX64f90 etc.

IRIX64dbg
Like IRIX64but compiled for debug.

IRIX64f77
same as IRIX64, for convenience in explicitly specifying the compiler.

IRIX64f90
Like IRIX64, but using f90. Not link-compatible with IRIX64f77 etc.

IRIX64f90dbg
Like IRIX64f90but compiled for debug.

IRIX64i8
Like IRIX64but compiled for INTEGER*8

IRIX64i8f77
Same as IRIX64i8
IRIX64r8f90
Like IRIX64f90but compiled for INTEGER*8 and REAL*8

IRIX6n32
For SGI IRIX 6 -n32 on mips-4 platforms using f77 and cc, with OpenMP support.
Not link-compatible with IRIX6n32f90 nor IRIX5*, IRIX64* etc.

IRIX6n32dbg
Like IRIX6n32but compiled for debug.

IRIX6n32f77
Same as IRIX6n32

IRIX6n32f90
Like IRIX64, but using f90.
Not link-compatible with IRIX6n32, IRIX64* etc.

IRIX6n32f90dbg
Like IRIX6n32f90but compiled for debug.

IRIX6n32r8f90
Like IRIX6n32f90but compiled for INTEGER*8 and REAL*8

Linux2_alpha
For Linux on DEC^H^H^HCompaq^H^H^H^H^H^HHP Alpha systems using Digital fort.

Linux2_alphadbg
Like Linux2_alphabut compiled for debug.

Linux2_ia64
For Linux on Intel IA64 using Intel ecc and efc Version 7.x. No OpenMP support.

Linux2_ia64_mp
For Linux on Intel IA64 using Intel ecc and efc Version 7.x, with OpenMP support.

Linux2_ia64_nomp
same as Linux2_ia64

Linux2_ia64efc
same as Linux2_ia64

Linux2_ia64efcdbg
...compiled for debug

Linux2_ia64gcc
... using gcc and g77

Linux2_ia64ifort
... Intel Version 8.x icc and ifort with OpenMP support.

Linux2_ia64ifortdbg
...compiled for debug

Linux2_x86
For Linux on Intel(/AMD) x86 using gcc and g77

Linux2_x86_64
For Linux on AMD(/Intel) x86_64 using gcc and g77

Linux2_x86_64dbg
...compiled for debug

Linux2_x86_64g95
...using gcc and g95

Linux2_x86_64path
...using PathScale pathcc and pathf90

Linux2_x86_64pathdbg
...compiled for debug

Linux2_x86dbg
For Linux on Intel(/AMD) x86, using gcc and g77, compiled for debug

Linux2_x86g95
For Linux on Intel(/AMD) x86, using gcc and g95

Linux2_x86ifc
For Linux on Intel(/AMD) x86, using Intel icc and ifc

Linux2_x86ifcdbg
...compiled for debug

Linux2_x86lf95
For Linux on Intel(/AMD) x86, using gcc and Lahey-Fujitsu lf95

Linux2_x86pg
For Linux on Intel(/AMD) x86, using Portland Group pgcc and pgf90 Compiled for gcc compatibility and OpenMP support.

Linux2_x86pg_gcc_mp
...same as Linux2_x86pg

Linux2_x86pg_gcc_nomp
Like Linux2_x86pg but no OpenMP support.
Use this one if you're using native (vendor-supplied RedHat,SuSE, Mandriva, etc.) libnetcdf.a

Linux2_x86pg_pgcc_mp
For Linux on Intel(/AMD) x86, using Portland Group pgcc and pgf90 Compiled for pgcc native mode and OpenMP support.
Not link compatible with Linux2_x86pg

Linux2_x86pg_pgcc_nomp
... no OpenMP support.

OSF1
For OSF1 on DEC^H^H^HCompaq^H^H^H^H^H^HHP VAX or Alpha systems using Digital fort, with OpenMP support.

SunOS5
For SunOS 5 (Solaris 2) systems, with OpenMP support.
Not link compatible with SunOS5f90. No 64-bit support since I don't have a 64-bit Sun system to develop and test on.

SunOS5dbg
...compiled for debug

SunOS5f77
Same as SunOS5

SunOS5f90
...compiled with f90.
Not link compatible with SunOS5. No 64-bit support since I don't have a 64-bit Sun system to develop and test on.

SunOS5f90dbg
...compiled for debug

Additionally, the libraries have in the past been compiled for a number of other platforms, but the machines used for building these no longer are available to compile and build the latest versions of the libraries. It should be a simple task to build versions of the libioapi.a and libnetcdf.a archive libraries on most UNIX workstations--at least, those with Feldman-descended Fortran compilers.

For C programmers: Further note that since most of the library routines are C wrappers around Fortran code, you need to use cc -c to build ".o" files for your program, and then use f77 or f77, as appropriate, to invoke the linker (since f77 knows how to link in the Fortran run-time libraries but cc doesn't), as in the following example which builds SunOS5 program "qux" from "qux.c":


setenv LIB /env/apps/SunOS5/lib             #  library directory
cc -c qux.c                                 #  produces qux.o
f77 -o qux qux.o -L${LIB} -lioapi -lnetcdf # linking step


Previous: Data Types

Next: Public INCLUDE Files

To: Models-3/EDSS I/O API: The Help Pages