THE READING ROOM / BOOK GUIDE
Linkers and loaders
A working guide to the software that turns separately compiled pieces into a running program, for programmers who want to understand what happens between the compiler's output and the first instruction.
About the book
John R. Levine's book examines linkers and loaders, the tools that bind abstract names in source code to concrete addresses and symbols a machine can use. The subject sits at a seam most programmers cross daily without looking: object files, symbol tables, relocation, shared libraries, and the handoff from executable file to process. Levine treats these as engineering problems with concrete formats and algorithms.
The book covers static linking, dynamic linking, relocation and address assignment, and the loader's role at program startup. It discusses object file formats and the practical machinery behind them, including the conventions that let code compiled in different languages or at different times work together. The treatment is grounded in real systems rather than a single idealized model.
Levine writes as a practitioner explaining mechanisms to other practitioners. The prose favors definitions, diagrams of data structures, and worked descriptions of how tools resolve symbols and patch addresses. Readers come away with a mental model of the build-and-launch pipeline that survives changes in specific toolchains.
How to read it
Read with an executable and a toolchain nearby. The material rewards pausing to inspect an object file, list symbols, or trace which library supplies a function. Treat the format descriptions as maps to compare against what your own compiler and linker actually emit.
The book is technical and assumes comfort with C, assembly-level concepts, and operating system basics. Some format details reflect the systems of its era, so expect to supplement them with current documentation. The concepts age better than the specifics.
Who it suits
Programmers who have hit confusing linker errors, maintain build systems, write plugins or shared libraries, or work on embedded and systems software will find the explanations useful. Compiler and operating system students benefit from seeing the stage between code generation and execution. Anyone content to treat the build as a black box can skip it.
Reading considerations
The book predates many current toolchain conventions, so format and platform details may not match today's defaults. Check which systems it addresses before relying on it for a specific platform. The core ideas about symbols, relocation, and loading remain worth testing against your own tools.
Follow the HN conversation
29 different recommenders are recorded in the upstream dataset. These are AI-classified source counts, not an independent rating.
Search HN comments about this book ↗
Explore videos on the same subject ↗
Book notes prepared with DeepSeek, using catalogue records and Open Library subject information. They are reading guidance, not a personal review or a verified chapter-by-chapter account. Book details can vary by edition. HN data methodology · Book metadata and covers.
