Skip to content

Dynamic library delivery tools for SBCL.

License

Notifications You must be signed in to change notification settings

CL98K/sbcl-librarian

 
 

Repository files navigation

sbcl-librarian

Opinionated interface for creating shared libraries. Requires SBCL version >2.1.10.

After loading this system, you can build the example library like this:

sbcl --eval "(progn (asdf:load-system :sbcl-librarian) (load \"libcalc.lisp\"))"

which produces a header file, a source file, and a core file, and then you can compile the artifacts like so with:

gcc -c -fpic libcalc.c

gcc -shared libcalc.o -o libcalc.so -lsbcl

gcc example.c -o example -lsbcl -lcalc -L.

which creates a shared library and executable using the functions defined in the example system, assuming you have libsbcl.so and libcalc.so in a shared library path somewhere.

NOTE: On Mac OS X you MUST specify -pagezero_size 0x100000 when linking the final executable, otherwise SBCL will fail to mmap its static space into the address 0x5000000. This is because Mac decides to make page zero take up a whole 4GB (!), which prevents access to the 32-bit address space. (Ostensibly to prevent null pointer or other such bad (truncated?) pointer dereferences.)

About

Dynamic library delivery tools for SBCL.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Common Lisp 93.8%
  • Python 2.8%
  • C 2.5%
  • Makefile 0.9%