how-gcc-works
.c -> cpp.exe -> .i //gcc -E = compile into preprocessed files (to the screen, would need >)
.i -> cc1.exe (or cc1plus) -> .s //gcc -S = compile into assembler source files
.s -> as.exe -> .o //gcc -c = compile into object files
.o .a -> ld.exe
.i = preproccessed .s = assembler source files .o = object file .a = libraries
gcc.exe = program that puts it all together cpp.exe = preprocessor cc1.exe = as.exe = assembler turns assembly code into machine object files ld.exe = loader puts the object files (and libraries) together into an executable