On my system, the linker's documentation (not surprisingly)
documents this.
Most of the linker documentation I've seen supposes that one
already knows the real basics: what a linker does (in general),
what a library is, etc. If you're really good, you can probably
deduce much of this from the linker documentation, but
typically, I'd hardly call it pedagogical material.
Just to be clear: it's a feature of the compiler/linker, not
the C++ language. I can imagine linkers which just pulls in
the needed parts out of the object files, in turned pulled
from the archives. Or systems without linkers, etc.
Yes and no. The standard does say at one point (phases of
compilation, phase 9) that "All external object and function
references are resolved. Library components are linked to
satisfy external references to functions and objects not defined
in the current translation. All such translator output is
collected into a program image which contains information needed
for execution in its execution environment." Which sounds
pretty much like a linker to me. And there are generally
established definitions, independently of the implementation (so
under Windows, a DLL is a type of object file, and not a
library, despite its name); the question per se isn't
implementation specific, even if a really detailed answer will
involve some implementation specific details.