Your programme once finshed should be transalated to some thing which tha mchine understands(Assembly language).For this process we would go for compilation.
Coming to the compilation option there plenty in fact which would be changing(options) with System to System and with versions .
Compile options would be specifying the type of code which your compiling along with other info about running above line or below lines,Array bounderies checking required or not ,in addition to doing the syntax checking etc.
The Compilation steps creates object module which would be subsequently need to undergo a Link edit step to get the actual Load module. when I mean load module that is instruction that computers could understand.
By specifiying a programming language and for specific version you could get the different compiler options just by doing a Google..