This manual introduces the UDUNITS-2 package, which contains a C library for units of physical quantities and a unit-definition and value-conversion utility.
Copyright 2007, 2008, 2009 University Corporation for Atmospheric Research
Access and use of this software shall impose the following obligations and understandings on the user. The user is granted the right, without any fee or cost, to use, copy, modify, alter, enhance and distribute this software, and any derivative works thereof, and its supporting documentation for any purpose whatsoever, provided that this entire notice appears in all copies of the software, derivative works and supporting documentation. Further, UCAR requests that the user credit UCAR/Unidata in any publications that result from the use of this software or in any product that includes this software, although this is not an obligation. The names UCAR and/or Unidata, however, may not be used in any advertising or publicity to endorse or promote any products or commercial entity unless specific written permission is obtained from UCAR/Unidata. The user also understands that UCAR/Unidata is not obligated to provide the user with any support, consulting, training or assistance of any kind with regard to the use, operation and performance of this software nor to provide the user with any updates, revisions, new versions or "bug fixes."
THIS SOFTWARE IS PROVIDED BY UCAR/UNIDATA "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL UCAR/UNIDATA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE ACCESS, USE OR PERFORMANCE OF THIS SOFTWARE.
The UDUNITS-2 package provides support for units of physical quantities. Its three main components are: 1) a C library for units of physical quantities; 2) a utility; for obtaining the definition of a unit and for converting numeric values between compatible units; and 3) an extensive database of units.
UDUNITS
PackageThe UDUNIT-2
package differs from the original UDUNITS
package in the following ways:
UDUNITS
package only supports the ASCII character set. The UDUNITS-2
package supports the following character sets: ASCII, ISO 8859-1 (Latin-1),
and the UTF-8 encoding of ISO 10646 (Unicode). This means that unit
string specifications like "µ°F·Ω⁻¹
" are now supported (your
viewer must support UTF-8 to display this string correctly).
0.1 lg(re 1 mW)
" specifies a deciBel unit with a
one milliwatt reference level.
Such units are fully integrated into the package and all meaningful
operations and conversions are supported.
float
, double
, or
one-dimensional arrays of float
s or double
s.
UDUNITS
package. The new interface, however, is
easily understood and easy to use.
One thing that has not changed is that all unit string specifications
understood by the original UDUNITS
package are also
understood by the new UDUNITS-2
package.
Get this package from its download-page at http://www.unidata.ucar.edu/downloads/udunits/ and unpack it in an appropriate place, e.g.,
cd /usr/local/src gunzip -c udunits-2.0.4.tar.gz | pax -r
Not all development enviroments can build and install this package. See the long instructions in the next section for details.
The following assumes that you are familiar with autoconf-based package-installation. If you're not, then follow the long instructions in the next section.
./configure [--prefix=root] [--disable-shared] [CC=path] make make check # optional; requires CUNIT installation make install make install-info install-html install-pdf make clean
By default, the installation root is /usr/local
.
If you encounter problems, then follow the instructions in the next section.
cd udunits-2.0.4
make
utilities cannot build this package correctly,
locate the operating system that is closest to yours in the following table
and determine the make utility that you will use.
O/S make
UtilityAIX 1 5
/bin/make
AIX 1 5
/opt/gnu/bin/make
AIX 1 5
/usr/ccs/bin/make
Darwin 8.11.0
/usr/bin/gnumake
Darwin 8.11.0
/usr/bin/make
Darwin 9.6.0
/usr/bin/gnumake
Darwin 9.6.0
/usr/bin/make
IRIX64 6.5
/bin/make
IRIX64 6.5
/opt/gnu/bin/make
Linux 2.6.27.7-134.fc10.x86_64
/usr/bin/gmake
Linux 2.6.27.7-134.fc10.x86_64
/usr/bin/make
Linux 2.6.27.9-73.fc9.x86_64
/usr/bin/gmake
Linux 2.6.27.9-73.fc9.x86_64
/usr/bin/make
OSF1 V5.1
/bin/make
OSF1 V5.1
/opt/gnu/bin/gmake
OSF1 V5.1
/usr/bin/posix/make
OSF1 V5.1
/usr/ccs/bin/make
SunOS 5.10
/opt/csw/bin/gmake
SunOS 5.10
/usr/ccs/bin/make
SunOS 5.10
/usr/xpg4/bin/make
SunOS 5.9
/opt/gnu/bin/gmake
SunOS 5.9
/usr/ccs/bin/make
SunOS 5.9
/usr/xpg4/bin/make
distclean
target using the make utility from step 2:
make distclean
configure
script.
O/S Compiler configure
OptionAIX 1 5
/opt/gnu/bin/gcc
AIX 1 5
/usr/vac/bin/c89
AIX 1 5
/usr/vac/bin/cc
AIX 1 5
/usr/vac/bin/xlc
Darwin 8.11.0
/usr/bin/cc
Darwin 8.11.0
/usr/bin/gcc
Darwin 9.6.0
/usr/bin/cc
Darwin 9.6.0
/usr/bin/gcc
IRIX64 6.5
/bin/c89
IRIX64 6.5
/bin/cc
IRIX64 6.5
/opt/gnu/bin/gcc
Linux 2.6.27.7-134.fc10.x86_64
/usr/bin/c89
Linux 2.6.27.7-134.fc10.x86_64
/usr/bin/cc
Linux 2.6.27.7-134.fc10.x86_64
/usr/bin/gcc
Linux 2.6.27.9-73.fc9.x86_64
/usr/bin/c89
Linux 2.6.27.9-73.fc9.x86_64
/usr/bin/cc
Linux 2.6.27.9-73.fc9.x86_64
/usr/bin/gcc
OSF1 V5.1
/bin/c89
OSF1 V5.1
/bin/cc
OSF1 V5.1
/opt/gnu/bin/gcc
OSF1 V5.1
/usr/ccs/bin/c89
OSF1 V5.1
/usr/ccs/bin/cc
SunOS 5.10
/opt/csw/gcc3/bin/gcc
SunOS 5.10
/opt/csw/gcc4/bin/gcc
SunOS 5.10
/opt/SUNWspro/bin/c89
SunOS 5.10
/opt/SUNWspro/bin/cc
SunOS 5.9
/opt/csw/gcc3/bin/gcc
SunOS 5.9
/opt/csw/gcc4/bin/gcc
SunOS 5.9
/opt/SUNWspro/bin/c89
SunOS 5.9
/opt/SUNWspro/bin/cc
The option --disable-shared
causes the build process to create
a static library only: a sharable library is not created.
This option is necessary if the libtool
utility that's included
in this package can't build a sharable library using the given compiler.
The following table lists the build environments that do not work — so don't use them:
O/S Compiler configure
OptionDarwin 8.11.0
/usr/bin/c89
Darwin 8.11.0
/usr/bin/c89
--disable-shared
Darwin 9.6.0
/usr/bin/c89
Darwin 9.6.0
/usr/bin/c89
--disable-shared
SunOS 5.10
/opt/SUNWspro/bin/c99
SunOS 5.10
/opt/SUNWspro/bin/c99
--disable-shared
SunOS 5.9
/opt/SUNWspro/bin/c99
SunOS 5.9
/opt/SUNWspro/bin/c99
--disable-shared
configure
script.
Specify the installation prefix, the compiler from the
previous step, and any required option.
For example, if you are on an HP-UX system and want to use
the /bin/c89
compiler and install under /opt
,
then the following command is appropriate:
./configure --prefix=/opt --disable-shared CC=/bin/c89
If the installation prefix is not specified, then the default
is to install under /usr/local
.
If the compiler isn't specified, then the default is to use
gcc
.
make
check
target using the
make utility from step 2:
make check
This step is only effective if the configure
script found an
installed CUNIT
unit-testing package. If that package wasn't
found, then the above command will quickly exit without testing this
package.
install
target using the make utility from
step 2:
make install
make install-info install-html install-pdf
clean
target using the make utility
from step 2:
make clean
By default, the following files are created or installed under the installation directory:
bin/: udunits2 # Unit utility include/: converter.h # API for value converters udunits2.h # API for units lib/: libudunits2.a # Static unit library libudunits2.la # libtool(1) reference for unit library libudunits2.so # Link to shared library libudunits2.so.0 # Link to shared library libudunits2.so.0.0.0 # Shared library share/: doc # Directory. Created if it doesn't exist info # Directory. Created if it doesn't exist udunits2.xml # Default unit database udunits2-accepted.xml # Units accepted for use with the SI udunits2-base.xml # SI base units udunits2-common.xml # Common, non-SI units udunits2-derived.xml # Derived units of the SI udunits2-prefixes.xml # SI unit prefixes share/doc: udunits # Directory. Created if it doesn't exist share/doc/udunits: udunits2.html # HTML documentation on this package udunits2lib.html # HTML documentation on the unit library udunits2lib.pdf # PDF documentation on the unit library udunits2.pdf # PDF documentation on this package udunits2prog.html # HTML documentation on the unit utility udunits2prog.pdf # PDF documentation on the unit utility share/info: dir # Top-level "info" file. Created if it doesn't exist udunits2.info # INFO documentation on this package udunits2lib.info # INFO documentation on the unit library udunits2prog.info # INFO documentation on the unit utility
The home-page for this package can be found at http://www.unidata.ucar.edu/software/udunits/.
Bug reports should be sent to support-udunits@unidata.ucar.edu.