Google
 
   
Login
Username:

Password:


Lost Password?

Register now!
Search
Main Menu
top books
Polls
What do you think about php-deluxe.net?
Excellent!
Cool
Hmm..not bad
What the hell is this?
encyclopedia
recommendation
compare webbrowser
Freenet DSL
Who's Online
6 user(s) are online (5 user(s) are browsing encyclopedia)

Members: 0
Guests: 6

more...
browser tip
Unix Befehle
manual of unix befehle
recommendation!
Sponsored
partner

Static build

A static build is a compiled version of a program which has been statically linked against libraries.

In computer science, linking means taking one or more object code generated by Compilers and assemble them into a single executable program. The objects are program modules containing machine code and symbol definitions, which come in two varieties:

  • Defined or exported symbols are function (programming)s or Variables that are present in the module represented by the object, and which should be available for use by other modules.
  • Undefined or imported symbols are functions or variables that are called or referenced by this object, but not internally defined.
  • A Linker program then resolves references to undefined symbols by finding out which other object defines a symbol in question, and replacing placeholders with the symbol s address. Linkers can take objects from a collection called a library (computer science) . The final program does not include the whole library, only those objects from it that are needed. Libraries for diverse purposes exist, and one or more system libraries are usually linked in by default.

    Modern operating system environments allow library (computer science)#Dynamic_linking , or the postponing of the resolving of some undefined symbols until a program is run. That means that the executable still contains undefined symbols, plus a list of objects or libraries that will provide definitions for these. Loading the program will load these objects/libraries as well, and perform a final linking.

    In a statically built program, no dynamic linking occurs: all the bindings have been done at compile time.

    Dynamic linking offers two advantages:

  • Often-used libraries (for example the standard system libraries) need to be stored in only one location, not duplicated in every single binary.
  • If a library is upgraded or replaced, all programs using it dynamically will immediately benefit from the corrections. Static builds would have to be re-linked first.
  • On the other hand, static builds have a very predictable behavior (because they do not rely on the particular version of libraries which is available on the final system), and are commonly found in forensic and security tools to avoid possible contamination or malfunction due to broken libraries on the examined machine.

    =See also=

  • Library (computer science)
  • Name decoration
  • Relocation table
  • =References=

    *John R. Levine: Linkers and Loaders , Morgan-Kauffman, ISBN 1-55860-496-0