## 3.1 Basic Usage

The linker can be invoked on the input functor `In` in order to create an output functor `Out` as follows:

> `% ozl` `In``-o` `Out`

Consider for example the pickled functors `A.ozf`, `B.ozf`, and `subdir/C.ozf`, where `A.ozf` has been created from the following functor definition:

> `functor
> import B
> C at 'subdir/C.ozf'
> Application
> end`

and the other functors have empty imports. By executing

> `% ozl A.ozf -o D.ozf`

a new pickled functor `D.ozf` is created that contains both the functors contained in `B.ozf` and `subdir/C.ozf` but not the system functor `Application`.

If the linker is invoked in verbose mode as

> `% ozl --verbose A.ozf -o D.ozf`

or

> `% ozl -v A.ozf -o D.ozf`

for short, it prints the following information on which functors are in fact included and which are still imported by the newly created functor.

> `Include:
> A.ozf, B.ozf, subdir/C.ozf.
> Import:
> x-oz://system/Application.`

If we now invoke the linker on the newly created pickled functor `D.ozf` in verbose mode as follows:

> `% ozl -v D.ozf`

it only prints the following information without creating a new functor:

> `Include:
> D.ozf.
> Import:
> x-oz://system/Application.`

By default, the linker includes (or links) all functors that are referred to by relative urls as in our previous example. How to change this behaviour is discussed in Section 3.2.