make reads a Makefile describing targets, their dependencies, and the commands to build them. It rebuilds only what is out of date, checking file modification times against declared dependencies. This incremental model is why make has survived for fifty years despite newer alternatives.
A minimal Makefile:
program: main.o util.o
gcc -o program main.o util.o
%.o: %.c
gcc -c $<
make # build the default (first) target
make install # build the 'install' target
make -j8 # build up to 8 targets in parallel
make clean # conventionally, remove build artifacts
GNU Make is the dominant implementation on Linux. Large projects layer autotools, CMake, Meson, or Ninja on top, often generating Makefiles or equivalent build files.
Related terms: gcc, cmake
Discussed in:
- Chapter 11: Package Management — Building from Source