Static linking
Include all library code directly in the executable at build time. Result: one large binary that can run without external .so/.dll files. Opposite: dynamic linking.
Pros: no "DLL hell", no library version confusion, easy to deploy a single binary. Cons: larger files, no sharing of code between processes, security patches require recompilation. Classically static-linked: Go programs (Go default), Rust programs, BusyBox, many embedded binaries. musl libc is designed for static linking (glibc discourages it). Alpine Linux + Docker minimal images love static binaries. Modern trend: Wasm + containers sidestep the linking debate entirely.