Object files
A compiler turns each source file into an object file: machine code with gaps left for the addresses of things defined elsewhere. A linker then joins the object files, fills the gaps and writes a program or library. ELF and Mach-O object files share a format with their programs and are covered on those pages.