BSD 3 development
[unix-history] / usr / src / cmd / apl / documents / libr.doc
.tl 'LIBR(I)'12/17/75'LIBR(I)'
NAME
libr - fortran librarian
SYNOPSIS
libr libfile -k1 n11 n12 ... n1k ... -kn ...
DESCRIPTION
LIBR is a program to build and maintain libraries of object modules
to be used with LINK. An object module in a library is included in the out file
iff it satisfies an undefined reference at the time it is encountered. (With some
exceptions for -i: and -e: ) Therefore, the order of modules in a library is
important.
All commands except append (-a ) require that the file designated 'libfile'
already exit. The append command will create the library file if it does
not exist. The action of LIBR is governed by the keybytes, which are
interpreted in left-to-right order. The entire command line is checked for
correctness, and then executed.
In a library, all modules are identifies by their module name.
Assembly language programs get their module name from a .title directive.
In fortran subprograms the module name is the name of the subroutine declared
in it.
There are no default extensions.
The keybytes are:
-l
.in 20
list the contents of the library as it will appear at the completion
of the LIBR command
.in 0
-g mod syms
.in 20
As noted above, a module is included into an outfile from a library only if
it 'declares' a yet-undefined global symbol. Initially, a module declares
all those global symbols which are assigned values within it.
The -g command allows one to eliminate declarations from a module.
.in 0
-d mods
.in 20
delete the named modules from the library
.in 0
-i mod files
.in 20
place the modules in the named files into the library before the
given module.
.in 0
-r files
.in 20
Replace the modules in the library with those in the files having the
same module name.
.in 0
-a files
.in 20
Append the modules in the named files to the library. Create the library if it does
not exist.
.in 0
-c
.in 20
Generate a cross-reference
.in 0
EXAMPLE
A fortran user wants to create a library of six graphics
subroutines in the object files graph1.obj ... graph6.obj.
First, a library is created:
libr graphlib -a graph1.obj ... graph6.obj
If, later, it is necessary to replace one of the subroutines, say #4,
this can be done as:
libr graphlib -r graph4.obj
FILES
libr1.tmp - scratch file