1. Concept
|
|
1.1 Program Library |
|
A ``program library'' is simply a file containing compiled code (and data) that is to be incorporated later into a program. |
Program libraries allow programs to be more modular, faster to recompile, and easier to update. |
Program libraries can be divided into three types: static libraries, shared libraries, and dynamically loaded (DL) libraries. |
|
1.2 Static and DL Libraries |
|
Static libraries. |
– Static libraries are simply a collection of ordinary object files
– Static libraries aren't used as often as they once were, because of the advantages of shared libraries. |
DL libraries. |
– DL libraries are libraries that are loaded at times other than during the startup of a program.
– DL libraries provide a mechanism for shared code and data, allowing a developer of shared code/data to upgrade functionality without requiring applications to be re-linked or re-compiled. |
|
1.3 Symbols and Linkage |
|
External libraries provide a wealth of functionality – example: C standard library. |
Programs access libraries’ functions and variables via identifiers known as symbols. |
Header file declarations/prototypes mapped to symbols at compile time. |
Symbols are linked to definitions in external libraries during linking. |
Functions, global variables must be allocated memory before use. |
Can allocate at compile time (static) or at run time (shared). |
|
Consider the simple hello world program written below: |
#include <stdio.h>
const char msg[] = "Hello, world." ;
int main()
{
puts(msg);
return 0;
}
|
|
– What variables and functions are declared globally?
msg, main(), puts(), others in stdio.h
|
|