Stages
- preprocessing - text substitution, stripping comments and file inclusion
g++ -E main.cpp -o main.i
- compilation - compilation of the processed source code into assembly language
g++ -S main.i -o main.s
# or
g++ -S main.cpp -o main.s
- assembler - conversion of assembly code into machine code
as main.s -o main.o
# or
g++ -c main.cpp -o main.o
- linker - produce a single executable program file, it combines our program with startup code like the following ones
- standard code at the beginning of the program to set up the running environment to pass command-line parameters and environmental variables
- standard code at the end of the program to pass back a return code
g++ main.cpp -o main
Flags
-E
run the preprocessing stage-S
run the preprocessing and compilation stages-c
run the preprocessing, compilation and assemble stages-o file
write output to file-llibrary
,-l library
search the library named library when linking-Idir
add dir to the list of directories to be searched for header files-Ldir
add dir to the list of directories to be searched for-l
-Wall
enable all the warnings about some constructions considered questionable by some users-O
enable optimization
References
- GCC, C. (2008). Compilation process in GCC ~ Codingfreak. [online] Codingfreak.blogspot.com. Available at: http://codingfreak.blogspot.com/2008/02/compilation-process-in-gcc.html [Accessed 5 Apr. 2016].