Compiler error vs linker error?

c, c++, compiler-construction, linker

Solution

Compiler errors mean the compiler could not translate the source code you provided into object code. It usually means you have a syntactic or semantic error in your own program that you have to resolve before your program exhibits the behavior you're intending it to have.

Linker errors mean the linker could not build an executable program from the object code you provided. It usually means your program does not properly interface with its own dependencies or with the outside world (e.g. external libraries).

Problem

Just reading Effective C++ and he mentions several times "linker error", as opposed to compiler error. What constitutes a "linker error" and how do they differ from "compiler errors"? Are the rules/explanations based around a set of categories to logically remember this?

Original source