What is a run-time library? How are they different from other libraries?
A library is essentially a file that contains compiled object modules (a module is an object file produced by compiling a single source file). A program can call, or import, routines and access data defined in another library. Most C and C++ implementations provide a runtime library which contains the standard functions and data structures of the language (e.g., the printf() function, operator new, iostream objects, etc.). The main difference between a run-time library and a static library is that the program is linked to a runtime library at runtime, rather than link time. In addition, a run-time library is usually a shared one, so all processes and applications on the same machine share a single copy instead of having multiple copies (one per process) of the same library code. A run-time library offers three advantages:
- It reduces the program's size because the library's code is not included in the program's executable file
- Changes made to the run-time library (e.g., an upgrade) don't require that the programs be relinked; the next time you run the program, it automatically links to the new library version and absorbs the changes.
- It saves considerable amount of disk space because its code is shared rather than being copied into each program.