Static linking has many advantages over dynamic linking. It is simple to understand, implement, and use. It ensures that an executable is self-contained and does not require a particular set of libraries during execution. As a consequence, the executable image that was tested by the developer is exactly the same as gets executed by the user, diminishing the risk that the user's environment will affect correct behavior. The major disadvantages of static linking are increases in the memory required to run an executable, network bandwidth to transfer it, and disk space to store it.

The Slinky system uses digest-based sharing to combine the simplicity of static linking with the space savings of dynamic linking: Slinky executables are completely self-contained, although minimal performance and disk-space penalties are incurred if two executables use the same library.


The source code is here.


Collaborators


Publications

  1. Christian Collberg, John H. Hartman, Sridivya Babu, Sharath K. Udupa, Slinky: Static Linking Reloaded, Usenix, 2005. pdf