Debugging & Toolchain · Interview question

What programs make up the toolchain, and what does each do?

A strong answer

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.

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.

More The Toolchain questions

Browse all 472 interview questions
What programs make up the toolchain, and what does each do? | EmbeddedPrep.io