+ <option>-shared</option>
+ <indexterm><primary><option>-shared</option></primary></indexterm>
+ </term>
+ <listitem>
+ <para>Instead of creating an executable, GHC produces a
+ shared object with this linker flag. Depending on the
+ operating system target, this might be an ELF DSO, a Windows
+ DLL, or a Mac OS dylib. GHC hides the operating system
+ details beneath this uniform flag.</para>
+
+ <para>The flags <option>-dynamic</option>/<option>-static</option> control whether the
+ resulting shared object links statically or dynamically to
+ Haskell package libraries given as <option>-package</option> option. Non-Haskell
+ libraries are linked as gcc would regularly link it on your
+ system, e.g. on most ELF system the linker uses the dynamic
+ libraries when found.</para>
+
+ <para>Object files linked into shared objects must be
+ compiled with <option>-fPIC</option>, see <xref linkend="options-codegen" /></para>
+
+ <para>When creating shared objects for Haskell packages, the
+ shared object must be named properly, so that GHC recognizes
+ the shared object when linked against this package. See
+ shared object name mangling.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <option>-dynload</option>
+ <indexterm><primary><option>-dynload</option></primary></indexterm>
+ </term>
+ <listitem>
+ <para>
+ This flag selects one of a number of modes for finding shared
+ libraries at runtime. See <xref linkend="finding-shared-libs"/> for
+ a description of each mode.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>