2.6. Invoking GHCi
Prev | Chapter 2. Using GHCi | Next

## 2.6. Invoking GHCi

GHCi is invoked with the command `ghci` or `ghc --interactive`. One or more modules or filenames can also be specified on the command line; this instructs GHCi to load the specified modules or filenames (and all the modules they depend on), just as if you had said `:load `modules`` at the GHCi prompt (see Section 2.7, “GHCi commands”). For example, to start GHCi and load the program whose topmost module is in the file `Main.hs`, we could say:

    $ ghci Main.hs

Most of the command-line options accepted by GHC (see Chapter 4, Using GHC) also make sense in interactive mode. The ones that don't make sense are mostly obvious.

### 2.6.1. Packages

Most packages (see Section 4.9.1, “Using Packages ”) are available without needing to specify any extra flags at all: they will be automatically loaded the first time they are needed.

For hidden packages, however, you need to request the package be loaded by using the `-package` flag:

    $ ghci -package readline
    GHCi, version 6.8.1: http://www.haskell.org/ghc/  :? for help
    Loading package base ... linking ... done.
    Loading package readline-1.0 ... linking ... done.
    Prelude>

The following command works to load new packages into a running GHCi:

    Prelude> :set -package name

But note that doing this will cause all currently loaded modules to be unloaded, and you'll be dumped back into the `Prelude`.

### 2.6.2. Extra libraries

Extra libraries may be specified on the command line using the normal `-l`lib`` option. (The term library here refers to libraries of foreign object code; for using libraries of Haskell source code, see Section 2.2.1, “Modules vs. filenames”.) For example, to load the “m” library:

    $ ghci -lm

On systems with `.so`-style shared libraries, the actual library loaded will the `lib`lib`.so`. GHCi searches the following places for libraries, in this order:

- Paths specified using the `-L`path`` command-line option,

- the standard library search path for your system, which on some systems may be overridden by setting the `LD_LIBRARY_PATH` environment variable.

On systems with `.dll`-style shared libraries, the actual library loaded will be ``lib`.dll`. Again, GHCi will signal an error if it can't find the library.

GHCi can also load plain object files (`.o` or `.obj` depending on your platform) from the command-line. Just add the name the object file to the command line.

Ordering of `-l` options matters: a library should be mentioned before the libraries it depends on (see Section 4.12.6, “Options affecting linking”).

Prev | Up | Next
2.5. The GHCi Debugger | Home | 2.7. GHCi commands