GHC is a command-line compiler: in order to compile a Haskell program,
GHC must be invoked on the source file(s) by typing a command to the
shell. The steps involved in compiling a program can be automated
using the make tool (this is especially useful if the program
consists of multiple source files which depend on each other). This
section describes how to use GHC from the command-line.

Command-line options begin with -. They may not be
grouped: -vO is different from -v -O. Options need not
precede filenames: e.g., ghc *.o -o foo. All options are
processed and then applied to all files; you cannot, for example, invoke
ghc -c -O1 Foo.hs -O2 Bar.hs to apply different optimisation
levels to the files Foo.hs and Bar.hs. For conflicting
options, e.g., -c -S, we reserve the right to do anything we
want. (Usually, the last one applies.)