



Linking It often happens that a number of different programs require some of the same computations to be carried out. If these calculations can be turned into procedures and linked into each program it can save a great deal of programming effort, especially in the long run. This "building block" approach is particularly beneficial for large programs. Many organisations gradually build up collections of procedures which become an important software resource. Procedures collected in this way tend to be fairly reliable and free from bugs, if only because they have been extensively tested and de-bugged in earlier applications.
It obviously saves on compilation time if these commonly-used procedures can be
kept in compiled form as object modules. Almost all operating systems allow a
collection of object modules to be stored in an object library (sometimes known as a
pre-compiled or relocatable-code library). This is a file containing a collection of
object modules together with an index which allows them to be extracted easily.
Object libraries are not only more efficient but also easier to use as there is only one
file-name to specify to the linker. The linker can then work out for itself which
modules are needed to satisfy the various CALL statements and function references
encountered in the preceding object modules. Object libraries also simplify the
management of a procedure collection and may reduce the amount of disc
space needed. There are usually simple ways of listing the contents of an
object library, deleting modules from it, and replacing modules with new
versions.
All Fortran systems come with a system library which contains the object
modules for various intrinsic functions such as SIN, COS, and SQRT. This
is automatically scanned by the linker and does not have to be specified
explicitly.
Software is often available commercially in the form of procedure libraries containing modules which may be linked into any Fortran program. Those commonly used cover fields such as statistics, signal processing, graphics, and numerical analysis.
The order of the object modules supplied to the linker does not usually matter although some systems require the main program to be specified first. The order in which the library files are searched may be important, however, so that some care has to be exercised when several different libraries are in use at the same time.
The principal output of the linker is a single file usually called the executable image. Most linkers can also produce a storage map showing the location of the various modules in memory. Sometimes other information is provided such as symbol tables which may be useful in debugging the program.