(guile.info.gz) Dynamic Libraries
Info Catalog
(guile.info.gz) The Guile module system
(guile.info.gz) Modules
(guile.info.gz) Variables
31.4 Dynamic Libraries
======================
Most modern Unices have something called "shared libraries". This
ordinarily means that they have the capability to share the executable
image of a library between several running programs to save memory and
disk space. But generally, shared libraries give a lot of additional
flexibility compared to the traditional static libraries. In fact,
calling them `dynamic' libraries is as correct as calling them `shared'.
Shared libraries really give you a lot of flexibility in addition to
the memory and disk space savings. When you link a program against a
shared library, that library is not closely incorporated into the final
executable. Instead, the executable of your program only contains
enough information to find the needed shared libraries when the program
is actually run. Only then, when the program is starting, is the final
step of the linking process performed. This means that you need not
recompile all programs when you install a new, only slightly modified
version of a shared library. The programs will pick up the changes
automatically the next time they are run.
Now, when all the necessary machinery is there to perform part of the
linking at run-time, why not take the next step and allow the programmer
to explicitly take advantage of it from within his program? Of course,
many operating systems that support shared libraries do just that, and
chances are that Guile will allow you to access this feature from within
your Scheme programs. As you might have guessed already, this feature
is called "dynamic linking".(1)
As with many aspects of Guile, there is a low-level way to access the
dynamic linking apparatus, and a more high-level interface that
integrates dynamically linked libraries into the module system.
Menu
* Low level dynamic linking
* Extensions
---------- Footnotes ----------
(1) Some people also refer to the final linking stage at program
startup as `dynamic linking', so if you want to make yourself perfectly
clear, it is probably best to use the more technical term "dlopening",
as suggested by Gordon Matzigkeit in his libtool documentation.
Info Catalog
(guile.info.gz) The Guile module system
(guile.info.gz) Modules
(guile.info.gz) Variables
automatically generated byinfo2html