The tools needed are a compiler, an assembler, and a linker. The compiler generates assembler output from a C input. The assembler then translates that into machine code from assembler sources and produces an output that can be linked together into one or many objects into a final output for deployment on the system. There are additional tools which allow users to copy, relocate, and manipulate the elf objects.

