10 Dlopened modules

It can sometimes be confusing to discuss dynamic linking, because
the term is used to refer to two different concepts:

Compiling and linking a program against a shared library, which is
resolved automatically at run time by the dynamic linker. In this
process, dynamic linking is transparent to the application.

The application calling functions such as dlopen that load
arbitrary, user-specified modules at runtime. This type of dynamic
linking is explicitly controlled by the application.

To mitigate confusion, this manual refers to the second type of dynamic
linking as dlopening a module.

The main benefit to dlopening object modules is the ability to access
compiled object code to extend your program, rather than using an
interpreted language. In fact, dlopen calls are frequently used in
language interpreters to provide an efficient way to extend the
language.

Libtool provides support for dlopened modules. However, you should
indicate that your package is willing to use such support, by using the
LT_INIT option ‘dlopen’ in configure.ac. If this
option is not given, libtool will assume no dlopening mechanism is
available, and will try to simulate it.

This chapter discusses how you as a dlopen application developer might
use libtool to generate dlopen-accessible modules.