The current release version of the I/O API library is Version 2.1; Version 2.2 is in beta-test, and is expected to be released by April 1, 2002. To download binary libraries and executables for Version 2.1, please go to the I/O API Download Page.
Release Version 2.1 of the I/O API and the I/O -related
tool and sample programs is available
here in source code form. New features of this release are
documented here.
Makeinclude
files are available for the following
platforms:
Beta-test 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:
If you call I/O API routines, you will need
both libioapi.a and
libnetcdf.a (or their debug-compiled equivalents); 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):
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,
for every transition among versions 3.0, 3.5, 4.0. 4.1, and
4.5.
I/O API
Version 2 libraries libioapi_new.a for
both f77 and f90 can be found on the MCNC
Environmental Programs servers in the following subdirectories
of /env/proj/ppar
, where the suffix
f90
indicates an f90-compiled library,
and dbg
indicates a debug-compiled library):
/env/proj/ppar/IRIX6/
/env/proj/ppar/IRIX64/
/env/proj/ppar/IRIX64f90/
/env/proj/ppar/IRIX64f90cpl/
/env/proj/ppar/IRIX64i8/
/env/proj/ppar/IRIX64r8f90/
/env/proj/ppar/IRIX6n32/
/env/proj/ppar/IRIX6n32dbg/
/env/proj/ppar/IRIX6n32f90/
/env/proj/ppar/IRIX6n32f90cpl/
/env/proj/ppar/IRIX6n32f90dbg/
/env/proj/ppar/IRIX6n32r8f90/
/env/proj/ppar/IRIX6n64f90/
/env/proj/ppar/Linux2_alpha/
/env/proj/ppar/Linux2_x86/
/env/proj/ppar/SunOS5/
/env/proj/ppar/SunOS5dbg/
/env/proj/ppar/SunOS5f90/
/env/proj/ppar/SunOS5f90cpl/
/env/proj/ppar/SunOS5f90dbg/
Additionally, the libraries have in the past been compiled for SGI IRIX 4.x (IRIX4), R3xxx SGI IRIX 5.x, Linux 2_x86 with the Portland Group compilers, DEC ULTRIX (VAXULTRIX4 or RISCULTRIX4), Sun SPARC SunOS 4.x, DEC VAX/VMS (VMS), but the machines used for building these no longer are available to compile and build the latest versions of the libraries. Work is in progress on Cray T-3D; 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 f77's.
As of 1996, compiled copies of Version 1 libraries for workstation architectures (as well as executables for the tools programs) can be found in host specific directories under /env/apps -- the directory for Solaris 2.x is /env/apps/SunOS5/lib, for example. On sequoia, the Cray libioapi.a and libioapi.debug.a are found in /home/xcc/m3io; libnetcdf.a is in directory /usr/local/lib. Gzipped copies of these libraries and the related tools are available by anonymous ftp for Sun SPARC Solaris 2.x, HP HP-UX 9 and later, IBM AIX, SGI IRIX5.x for R4xxx and later, and Digital Alpha UNIX OSF1.
To use these libraries, use the appropriate "-L" and "-l" options in your compile-and-link command line, as in the following example, which builds executable "foo" from "foo.f" and "bar.f" on a Solaris 2.x (SunOS5) machine:
setenv LIB /env/apps/SunOS5/lib # library directory f77 -o foo foo.f bar.f -L${LIB} -lioapi -lnetcdf
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
To: Models-3/EDSS I/O API: The Help Pages