Start Here¶
Start with a terminal, not with the capstone. Your first job is to see Make make one honest decision about one file. Everything else in the course grows from that.
Your first hour¶
If you only have one hour today, use it like this:
- Confirm you have GNU Make 4 or newer with
make --version. - Complete the first file-target exercise in Module 00.
- Run the same build twice and explain why the second run does no work.
- Change the input file and explain why the output becomes stale again.
- Begin Module 01 only after the previous four steps feel ordinary.
That is enough for a real start. You do not need the capstone, C code, CI, or advanced rule syntax yet.
If Make is completely new¶
- Complete the first Makefile in Module 00.
- Confirm that
make --versionreports GNU Make 4 or newer. - Create a directory dedicated to course experiments.
- Begin Module 01.
Keep each module’s files in a separate practice directory. Breaking a practice build is part of learning; isolating it makes experimentation safe.
Before leaving orientation, check that you can answer these without guessing:
- Which path is the target in the file-building example?
- Which path is its prerequisite?
- Why does the second run do no work?
- Which single edit makes the target stale again?
If any answer is unclear, rerun the three commands with make --trace. Ten minutes spent
reading that evidence now prevents hours of memorizing syntax without a graph model.
What not to do on day one¶
- Do not copy the capstone and try to understand it all at once.
- Do not rush into pattern rules before you understand one explicit file target.
- Do not memorize automatic variables before you have seen the decision they describe.
- Do not read exercise answers first unless you already have your own failed prediction.
If you already use Make¶
Do not skip Module 01 merely because targets and recipes look familiar. First answer:
- Can you predict exactly which targets rebuild after changing a header?
- Can you explain the answer with
make --trace? - Can you run the same successful build twice and show that the second run does no work?
If any answer is uncertain, begin with Module 01. Familiar syntax and a reliable mental model are different achievements.
If you inherited a failing build¶
Use the focused routes below, but return to the full sequence after the immediate problem is understood.
| Symptom | Read first | Command to gather evidence |
|---|---|---|
| target never rebuilds | Module 01 | make --trace TARGET |
| target always rebuilds | Modules 01 and 03 | make -q TARGET; echo $? |
make -j fails |
Module 02 | compare make -j1 with make -j8 |
| variable has a surprising value | Module 04 | make --warn-undefined-variables |
| generated files are incomplete | Module 06 | inspect producer rules and failed-run leftovers |
| release contents vary | Modules 08 and 09 | compare sorted manifests and checksums |
What to save from each day¶
Create a small learning record containing:
- the final Makefile or repository change
- the command used to verify it
- one prediction that was wrong
- one sentence explaining the corrected model
Do not save generated build directories unless an exercise explicitly asks for failure evidence.
When to read answers¶
Attempt an exercise first. If you are blocked for more than 20 minutes:
- write down the exact behavior you expected
- capture the command and output you observed
- read only the matching answer
- close the answer and reproduce the repair yourself
An answer is a teaching aid, not proof that you can perform the skill.
Your next page¶
Read Module 00 for setup and study rhythm, then continue directly to Module 01. Use the course guide only when you need a route through an existing problem.