7 1.2. Finding ancillary files
10 2. SOURCE DISTRIBUTION
14 2.4. Tracking SBCL sources
15 2.5. Supported platforms
18 1. BINARY DISTRIBUTION
22 To run SBCL without installing it, from the top of binary distribution
27 The following command installs SBCL and related documentation under
28 the "/usr/local" directory:
30 # INSTALL_ROOT=/usr/local sh install.sh
32 You can also install SBCL as a user, under your home directory:
34 $ INSTALL_ROOT=/home/me sh install.sh
36 In other words, "install.sh" installs SBCL under the directory named
37 by the environment variable "INSTALL_ROOT".
39 If you install SBCL from binary distribution in other location than
40 "/usr/local", see section 1.2, "Finding ancillary files".
42 1.2. Finding ancillary files
44 The SBCL runtime needs to be able to find the ancillary files
45 associated with it: the "sbcl.core" file, and the contrib modules.
47 Finding core can happen in three ways:
49 1. By default, in a location configured when the system was built.
50 For binary distributions this is in "/usr/local/lib/sbcl".
52 2. By environment variable, in the directory named by the
53 environment variable "SBCL_HOME". Example:
55 $ export SBCL_HOME=/foo/bar/lib/sbcl
58 If your "INSTALL_ROOT" was FOO, then your "SBCL_HOME" is
61 3. By command line option:
63 $ sbcl --core /foo/bar/sbcl.core
65 The usual, recommended approach is method #1. Method #2 is useful if
66 you're installing SBCL on a system in a non-standard location
67 (e.g. in your user account), instead of installing SBCL on an entire
68 system. Method #3 is mostly useful for testing or other special
71 Contributed modules are primarily looked for in "SBCL_HOME", or the
72 directory the core resides in if "SBCL_HOME" is not set.
73 ASDF:*CENTRAL-REGISTRY* serves as an additional fallback for
78 The two files that SBCL needs to run, at minimum, are:
83 In addition, there are a number of modules that extend the basic
84 sbcl functionality, in
88 The "src/runtime/sbcl" is a standard executable, built by compiling
89 and linking an ordinary C program. It provides the runtime
90 environment for the running Lisp image, but it doesn't know much
91 about high-level Lisp stuff (like symbols and printing and objects)
92 so it's pretty useless by itself. The "output/sbcl.core" is a dump
93 file written in a special SBCL format which only sbcl understands,
94 and it contains all the high-level Lisp stuff.
96 The standard installation procedure, outlined in section 1.1 "Quick
97 start", is to run the "install.sh", which copies all the files to
98 right places, including documentation and contrib-modules that have
99 passed their tests. If you need to install by hand, see "install.sh"
102 Documentation consists of a man-page, the SBCL Manual (in info, pdf
103 and html formats), and a few additional text files.
105 2. SOURCE DISTRIBUTION
109 To build SBCL you need a working toolchain and a Common Lisp system
110 (see section 2.5 "Supported platforms"). You also need approximately
111 128 Mb of free RAM+swap.
113 To build SBCL using an already installed SBCL:
117 If you don't already have an SBCL binary installed as "sbcl" on your
118 system, you'll need to tell make.sh what Lisp to use as the
119 cross-compilation host. For example, to use CMUCL (assuming has
120 been installed under its default name "lisp") as the
121 cross-compilation host:
123 $ sh make.sh 'lisp -batch -noinit'
125 The build may take a long time, especially on older hardware. A
126 successful build ends with a message beginning: "The build seems to
127 have finished successfully...".
129 To run the regression tests:
131 $ cd tests && sh run-tests.sh
133 To build documentation:
135 $ cd doc/manual && make
137 This builds the Info, HTML and PDF documentation from the Texinfo
138 sources. The manual includes documentation string from the build
139 SBCL, but if SBCL itself has not been yet built, but one if found
140 installed documentation strings from the installed version are used.
142 Now you should have the same src/runtime/sbcl and output/sbcl.core
143 files that come with the binary distribution, and you can install
144 them as described in the section 1. "BINARY DISTRIBUTION".
146 2.2. Customizing SBCL
148 You can tweak the *FEATURES* set for the resulting Lisp system,
149 enabling or disabling features like documentation strings, threads,
150 or extra debugging code.
152 The preferred way to do this is by creating a file
153 "customize-target-features.lisp", containing a lambda expression
154 which is applied to the default *FEATURES* set and which returns the
155 new *FEATURES* set, e.g.
159 (pushnew x features))
161 (setf features (remove x features))))
162 ;; Threading support, available only on x86/x86-64 Linux, x86 Solaris
163 ;; and x86 Mac OS X (experimental).
164 (enable :sb-thread)))
166 This is the preferred way because it lets local changes interact
167 cleanly with CVS changes to the main, global source tree.
169 A catalog of available features and their meaning can be found in
170 "base-target-features.lisp-expr".
176 If the GNU make command is not available under the names "make",
177 "gmake", or "gnumake", then define the environment variable
178 GNUMAKE to a name where it can be found.
182 Try disabling exec-shield. The easiest way is to use
183 setarch: "setarch i386 -R sbcl".
185 Build crashes mysteriously, machine becomes unstable, etc
187 You may be running out of memory. Try increasing swap, or
188 building SBCL with fewer other programs running simultaneously.
192 * Check that the host lisp you're building with is known to work as
193 an SBCL build host, and that your operating system is supported.
195 * Try to do a build without loading any initialization files
196 for the cross-compilation host (for example
197 "sh make.sh 'sbcl --userinit /dev/null --sysinit /dev/null'").
199 * Some GCC versions are known to have bugs that affect SBCL
200 compilation: if the error you're encountering seems related to
201 files under "src/runtime", down- or upgrading GCC may help.
203 * Ask for help on the mailing lists referenced from
204 <http://www.sbcl.org/>.
206 2.4. Tracking SBCL sources
208 If you want to be on the bleeding edge, you can update your sources
209 to the latest development snapshot (or any previous development
210 snapshot, for that matter) by using anonymous CVS to
211 SourceForge. (This is not recommended if you're just using SBCL as a
212 tool for other work, but if you're interested in working on SBCL
213 itself, it's a good idea.) Follow the "CVS Repository" link on
214 <http://sourceforge.net/projects/sbcl> for instructions.
216 2.5. Supported platforms
218 Last updated for SBCL 0.9.3.74 (2005-08-20).
220 All of the following platforms are supported in the sense of "should
221 work", but some things like loading foreign object files may lag
222 behind on less-used operating systems.
224 Supported toolchains:
227 Sun toolchain with GCC
229 Supported build hosts are:
233 CCL (formerly known as OpenMCL)
234 ABCL (recent versions only)
235 CLISP (only some versions: 2.44.1 is OK, 2.47 is not)
239 Note that every release isn't tested with every possible host
240 compiler. You're most likely to get a clean build with SBCL itself
241 as host, otherwise CCL on a PPC and CMUCL elsewhere.
243 Supported operating systems and architectures:
245 x86 x86-64 PPC Sparc Alpha MIPS MIPSel
246 Linux 2.2, 2.4, 2.6 X X X X X X X
247 Darwin (Mac OS X) X X X
254 Some operating systems are more equal than others: most of the
255 development and testing is done on x86/x86-64 Linux and x86/PPC
258 If an underprivileged platform is important to you, you can help
259 by e.g. testing during the monthly freeze periods, and most
260 importantly by reporting any problems.
262 For further support, see Getting Support and Reporting Bugs
265 http://www.sbcl.org/manual/Getting-Support-and-Reporting-Bugs.html
267 if you do not have the manual for some reason.