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 = SBCL itself
os = OpenBSD 2.6, 2.7, 2.8, 2.9, and 3.0
host lisp = SBCL itself
-It is known not to build under CLISP because of (as of early June 2002)
-bugs in the CLISP garbage collector, and it is known not to build under
-other systems like OpenMCL because of (as of early June 2002) remaining
-dependencies of SBCL bootstrapping on CMUCLisms like the representation
-of BYTE.
+ 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
+ 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
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.
- 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