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 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:

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 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, 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


Previous: Data Types

Next: Public INCLUDE Files

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