Deep Dive into C/C++ Compilation and Linking
This volume is about what the compiler and the linker are actually doing behind the scenes: how source code turns into an executable, how static and dynamic libraries differ, how symbols get found — and how they fail to be — and at which step errors like undefined reference are actually stuck. By the end you'll be able to track down linker errors, design the ABI of your own dynamic libraries, and understand low-level machinery such as GOT/PLT.
New to C++? Work through the Getting Started volume first and get your environment running. This volume is a deep dive into mechanisms, written for readers who have been through the Volume 1 basics and want to understand the "why". Read it alongside the advanced CMake material in Volume 7 · Engineering Practice and you'll lose nothing on either the mechanisms or the tooling.