Next: Limitations, Previous: The Groveller, Up: Top [Contents][Index]
On recent enough versions of supported implementations (currently, GNU
CLISP 2.49 or later, CMUCL 2015-11 or later, and SBCL 1.2.17 or later,
except SBCL 2.0.4), and with a recent enough ASDF (3.1.2 or later),
you can create a statically linked Lisp executable image (or a
standalone application executable) that includes all the C extensions
defined via The Groveller’s :cffi-wrapper-file
ASDF
components (and any other such objects output by
asdf:compile-op
), as well as those defined by :c-file
or
:o-file
ASDF components, and your Lisp code. This makes it
easier to deliver your code as a single file.
Note that the resulting binary will typically still depend on any
shared libraries loaded via See load-foreign-library or
See use-foreign-library as well as core libraries such as
libc
.
To dump a statically linked executable image, use:
(asdf:load-system :cffi-grovel) (asdf:operate :static-image-op :example-software)
To dump a statically linked executable standalone application, use:
(asdf:load-system :cffi-grovel) (asdf:operate :static-program-op :example-software)
See the ASDF
manual for documentation about image-op
and program-op
which are the parent operation classes that behave similarly except
they don’t statically link C code.
Implementor’s note: There is also an operation
:static-runtime-op
to create the statically linked runtime alone, but it’s admittedly not very useful except as an intermediate step dependency towards building:static-image-op
or:static-program-op
.