Table of Contents
ghc-pkg
command)InstalledPackageInfo
: a package specification
In this chapter you'll find a complete reference to the GHC command-line syntax, including all 400+ flags. It's a large and complex system, and there are lots of details, so it can be quite hard to figure out how to get started. With that in mind, this introductory section provides a quick introduction to the basic usage of GHC for compiling a Haskell program, before the following sections dive into the full syntax.
Let's create a Hello World program, and compile and run it.
First, create a file hello.hs
containing
the Haskell code:
main = putStrLn "Hello, World!"
To compile the program, use GHC like this:
$ ghc hello.hs
(where $
represents the prompt: don't
type it). GHC will compile the source
file hello.hs
, producing
an object
file hello.o
and
an interface
file hello.hi
, and then it
will link the object file to the libraries that come with GHC
to produce an executable called hello
on
Unix/Linux/Mac, or hello.exe
on
Windows.
By default GHC will be very quiet about what it is doing, only
printing error messages. If you want to see in more detail
what's going on behind the scenes, add -v
to
the command line.
Then we can run the program like this:
$ ./hello Hello World!
If your program contains multiple modules, then you only need to
tell GHC the name of the source file containing
the Main
module, and GHC will examine
the import
declarations to find the other
modules that make up the program and find their source files.
This means that, with the exception of
the Main
module, every source file should be
named after the module name that it contains (with dots replaced
by directory separators). For example, the
module Data.Person
would be in the
file Data/Person.hs
on Unix/Linux/Mac,
or Data\Person.hs
on Windows.