This page aims to document the downsides and mitigations we have in place for those downsides as well as improving the situation in Debian around static linking.
- It requires rebuilding the world when the libraries change.
- It is harder to track than dynamic linking.
- It prevents memory sharing between different executables using the same code.
- It renders some security measure less effective (ASLR for example).
- To comply with the DFSG and GNU GPL, we need to keep old source around.
Various technology in Debian uses or is affected by static linking.
C libraries support static linking and files are named *.a and can be unpacked with the ar tool from binutils.
Packages can declare they were built using code from other packages by using the Built-Using header and the Debian archive keeps around old sources, marking them with the Extra-Source-Only header.
Lintian detects binaries that have been statically linked.
All Haskell libraries are statically linked into the final binary.
The release team have a transition that tracks Haskell rebuilds.
All OCaml libraries are statically linked into the final binary.
The release team have a transition that tracks OCaml rebuilds.
The Debian archive keeps around old sources referenced by the Built-Using header, marking them with the Extra-Source-Only header.
Manual binNMUs can be done for packages that declare a Built-Using header.
Change debian-policy to discourage static linking?