IF YOU HAVE A BINARY DISTRIBUTION:
-The two files that SBCL needs to run are sbcl and sbcl.core.
+The two files that SBCL needs to run, at minimum, are sbcl and sbcl.core.
They are in
src/runtime/sbcl
and
output/sbcl.core
+In addition, there are a number of modules that extend the basic sbcl
+functionality, in
+ contrib/
sbcl is a standard executable, built by compiling and linking an
ordinary C program. It provides the runtime environment for the
In order to get a usable system, you need to run sbcl in a way that
it can find sbcl.core. There are three ways for it to find
sbcl.core:
- 1. by default, in /usr/lib/sbcl.core or /usr/local/lib/sbcl.core
+
+ 1. by default, in /usr/lib/sbcl/sbcl.core or /usr/local/lib/sbcl/sbcl.core
+ (depending on the SBCL_HOME C preproccessor #define at compile-time)
2. by environment variable:
- $ export SBCL_HOME=/foo/bar/
+ $ export SBCL_HOME=/foo/bar/lib/sbcl
$ sbcl
3. by command line option:
$ sbcl --core /foo/bar/sbcl.core"
-The usual, recommended approach is method #1. Method #2 is useful if
-you're installing SBCL on a system in your user account, instead of
-installing SBCL on an entire system. Method #3 is mostly useful for
-testing or other special cases.
+
+The usual, recommended approach is method #1. Method #2 is useful if
+you're installing SBCL on a system in a non-standard location (e.g. in
+your user account), instead of installing SBCL on an entire system.
+Method #3 is mostly useful for testing or other special cases.
So: the standard installation procedure is
1. Copy sbcl.core to /usr/lib or /usr/local/lib.
2. Copy sbcl to /usr/bin or /usr/local/bin.
- 3. Optionally copy sbcl.1 to /usr/man/man1 or /usr/local/man/man1.
-The script install.sh does these for you (choosing the /usr/local
-subdirectory) in each case.
+ 3. Copy the contrib modules that you're using (if any) to the same place
+ as sbcl.core
+ 4. Optionally copy sbcl.1 to /usr/man/man1 or /usr/local/man/man1.
+
+The script install.sh does all of this for you, including compilation
+of all contrib modules it can find, and installation of all those that
+pass their tests. You should set the INSTALL_ROOT environment
+variable to /usr or /usr/local as appropriate before starting
+install.sh: e.g.
+ # INSTALL_ROOT=/usr/local sh install.sh
+or
+ $ INSTALL_ROOT=/home/me/sbcl sh install.sh
+(if your INSTALL_ROOT is XYZ, SBCL_HOME should be set to
+XYZ/lib/sbcl).
IF YOU HAVE A SOURCE DISTRIBUTION:
os = Debian GNU/Linux 2.1 with libc >= 2.1
host lisp = CMU CL 2.4.17
host lisp = SBCL itself
+ host lisp = CLISP CVS as of end of April
os = RedHat Linux 6.2
host lisp = SBCL itself
os = FreeBSD 3.4 or 4.0
host lisp = CMU CL
host lisp = SBCL itself
- os = OpenBSD 2.6
+ os = OpenBSD 2.6, 2.7, 2.8, 2.9, and 3.0
+ host lisp = SBCL itself
+ cpu = alpha
+ os = Debian GNU/Linux 2.2 with libc >= 2.1
+ host lisp = SBCL itself
+ os = Tru64 5.1
+ host lisp = SBCL itself
+ cpu = sparc
+ os = Debian GNU/Linux 2.2 with libc >= 2.2
host lisp = SBCL itself
-It is known not to build under CLISP, because CLISP doesn't support
-MAKE-LOAD-FORM. Reports of other systems that it works on, or help in
-making it run on more systems, would be appreciated.
+ os = Solaris 8
+ host lisp = SBCL itself
+ cpu = powerpc
+ os = Debian GNU/Linux 2.2 with libc >= 2.1
+ host lisp = OpenMCL 0.12
+ host lisp = SBCL itself
+ os = MacOS X.2
+ host lisp = OpenMCL 0.13.6
+ host lisp = SBCL itself
+ cpu = mips and mipsel
+ os = Debian GNU/Linux 3.0
+ host lisp = SBCL itself
+
+Reports of other systems that it works on (or doesn't work on, for
+that matter), or help in making it run on more systems, would be
+appreciated.
CAUTION CAUTION CAUTION CAUTION CAUTION
SBCL, like CMU CL, overcommits memory. That is, it
1. Make sure that you have enough RAM+swap to build SBCL, as
per the CAUTION note above. (As of version 0.6.0, the most
memory-intensive operation in make.sh is the second call to
- GENESIS, which makes the Lisp image grow to nearly 128 Mb RAM+swap.
- This will probably be reduced somewhat in some later version
- by allowing cold load of byte-compiled files, so that the cold
- image can be smaller.)
- 2. If the GNU make command is not available under the name "gmake",
- then define the environment variable GNUMAKE to a name where it can
- be found.
+ GENESIS, which makes the Lisp image grow to around 128 Mb RAM+swap.
+ 2. If the GNU make command is not available under the names "gmake"
+ or "make", then define the environment variable GNUMAKE to a name
+ where it can be found.
3. If you like, you can tweak the *FEATURES* set for the resulting
Lisp system, enabling or disabling features like documentation
- strings or extra debugging code. The preferred way to do this is
- by creating a file "customize-target-features.lisp", containing
- a lambda expression which is applied to the default *FEATURES*
- set and which returns the new *FEATURES* set, e.g.
+ strings, threads, or extra debugging code (see
+ "base-target-features.lisp-expr" for a list of recognized
+ *FEATURES*). The preferred way to do this is by creating a file
+ "customize-target-features.lisp", containing a lambda expression
+ which is applied to the default *FEATURES* set and which returns
+ the new *FEATURES* set, e.g.
(LAMBDA (LIST)
(ADJOIN :SB-SHOW
(REMOVE :SB-DOC
13 hours on a 133MHz Pentium (P54C) with 48Mb RAM, running OpenBSD 2.6.
Around the 48Mb mark, the build process is starved for RAM:
on my 48Mb OpenBSD machine with nothing else running, it
- spent about 2/3 of its wall clock time swapping. Anything which
- substantially increases memory use, like running X11, Emacs, or,
- God forbid, Netscape, can increase the build time substantially.
+ spent about 2/3 of its wall clock time swapping.
Now you should have the same src/runtime/sbcl and output/sbcl.core
files that come with the binary distribution, and you can install