Commit e34bf656 authored by Ben Gamari's avatar Ben Gamari 🐢 Committed by Marge Bot

users-guide: Add discussion of shared object naming

Fixes #18074.
parent 86d8ac22
......@@ -1061,6 +1061,14 @@ extra indirection).
its output in place of GHCVersion. See also :ref:`options-codegen`
on how object files must be prepared for shared object linking.
- When building a shared library, care must be taken to ensure that the
resulting object is named appropriately. In particular, GHC expects the
name of a shared object to have the form ``libHS<unit id>-ghc<ghc
version>.<ext>`` where *unit id* is the unit ID given during compilation via
the :ghc-flag:`-this-unit-id unit-id` flag, *ghc version* is the version of
GHC that produced/consumes the object and *ext* is the host system's usual
file extension for shared objects.
To compile a module which is to be part of a new package, use the
``-package-name`` (to identify the name of the package) and
``-library-name`` (to identify the version and the version hashes of its
......@@ -807,7 +807,8 @@ for example).
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.
when linking against this package.
See :ref:`shared object name mangling <building-packages>` for details.
.. ghc-flag:: -dynload
:shortdesc: Selects one of a number of modes for finding shared libraries at runtime.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment