(DLL) A library
which is linked to application programs
when they are loaded or run rather than as the final phase of compilation
. This means that the same block of library code can be shared between several tasks
rather than each task containing copies of the routines it uses. The executable is compiled with a library of "stubs
" which allow link errors to be detected at compile-time. Then, at run time
, either the system loader
or the task's entry code must arrange for library calls to be patched with the addresses of the real shared library routines, possibly via a jump table.
The alternative is to make library calls part of the operating system kernel
and enter them via some kind of trap
instruction. This is generally less efficient than an ordinary subroutine
It is important to ensure that the version of a dynamically linked library is compatible with what the executable expects.
Examples of operating systems using dynamic linking are SunOS
(.so - shared object files), Microsoft Windows
(.dll) and RISC OS
on the Acorn Archimedes