The toolchain is the chain that turns source into a runnable image. The preprocessor (cpp) expands macros and includes into a single block of pure C. The compiler (cc1, invoked through gcc) translates that into assembly for the target architecture. The assembler (as) turns the assembly into a machine-code object file with a symbol table. The linker (ld) combines all object files and libraries, resolves symbols, lays out sections per the linker script, and produces the final executable (an ELF on embedded). Finally the loader places the program into memory and starts it, on a desktop that's the OS loader, but on bare metal it's split into a flasher/programmer that writes the image to flash once and the on-chip startup code that initializes RAM and jumps to main at each reset. In the GNU world, gcc is actually a driver that runs the preprocess/compile/assemble/link stages for you, while the assembler, linker, and inspection tools come from binutils, and the C library is newlib. So it's compiler → assembler → linker → loader, with gcc orchestrating the front of that chain.
Debugging & Toolchain · Interview question
What programs make up the toolchain, and what does each do?
A strong answer
What a weak answer sounds like
You know the answer. Do you know what gets you dinged?
Pro breaks down the answer most candidates actually give to this question — and the specific reason an interviewer marks it down. It’s the difference between sounding correct and sounding senior, on all 472 questions.
From the lesson
The Toolchain
The chain of programs that turns source into a flashable image (compiler, assembler, linker, loader), plus cross-compilation (arm-none-eabi-*) and objcopy from ELF to .bin/.hex.