(define-page :getting-sbcl "Getting Started" "getting" getting-sbcl)
(defun getting-sbcl ()
"SBCL is available in source and binary form for "
(<a href= ,(page-link :ports)> "a number of different architectures")
". This page describes how to get SBCL installed and how to start
using it. For more complete installation instructions, please see the "
(<a href= "http://sbcl.cvs.sourceforge.net/*checkout*/sbcl/sbcl/INSTALL?revision=HEAD"> "INSTALL")
" document that comes with SBCL.")
(<h2> "Installing a binary")
"SBCL is available in binary form for many architectures. To
obtain the latest binary release for your system, visit the "
(<a href= ,(page-link :ports)> "platform support")
" page and click on the green square which indicates your
platform. When the binary is downloaded, unpack the tarball:"
(format nil "bzip2 -cd sbcl-~A-x86-linux-binary.tar.bz2 | tar xvf -"
(<code> (format nil "sbcl-~A-x86-linux-binary.tar.bz2"
" with the name of the tarball you downloaded. Then enter the
directory which was unpacked, and run the installation script to
install SBCL in your "
(format nil "cd sbcl-~A-x86-linux~%sh install.sh"
(<h2> "Running SBCL")
"Make sure that "
" is in your "
". Then run SBCL by invoking \"sbcl\", which should
produce a banner like this:"
(format nil "This is SBCL ~A, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.
SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses. See the CREDITS and COPYING files in the
distribution for more information.
*" (car *most-recent-release*)))
"To quit SBCL, type "
(<h2> "Installing to a different prefix")
"You can install SBCL to a different directory prefix by setting
" environment variable before running
the installation script:"
"INSTALL_ROOT=/my/sbcl/prefix sh install.sh")
"To start SBCL, you need to set the SBCL_HOME environment
variable to point at a subdirectory of the place you installed SBCL:"
"export SBCL_HOME=/my/sbcl/prefix/lib/sbcl # for bash / zsh
setenv SBCL_HOME /my/sbcl/prefix/lib/sbcl # for csh / tcsh")
"Make sure that "
" is in your "
" and invoke SBCL as described above.")
(<h2> "Using SBCL with Emacs")
"If you are going to use SBCL to develop Common Lisp, you
will want a development environment which is more human friendly than
the basic SBCL read-eval-print-loop. Such an environment is provided
(<a href= "http://www.common-lisp.net/project/slime/"> "SLIME")
", the Superior Lisp Interaction Mode for Emacs. SLIME
provides many features, including an enhanced REPL with symbol
completion and command-line history and interactive support for
compiling and debugging code.")
(<h2> "Compiling SBCL from Source")
(<p> "SBCL can be compiled from source code using another
ANSI-compliant Common Lisp implementation. As of SBCL 0.8.13, the
following compilers are known to work:"
(<li> "SBCL itself")
(<li> "CMU Common Lisp, tested with 18e and 19a")
(<li> "OpenMCL 0.14.1")
(<li> "CLISP 2.33.2"))
"To compile SBCL, first unpack the source tarball and enter the
directory it makes. Then make sure that your system's "
" is a GNU make or set the GNUMAKE environment variable
"export GNUMAKE=gnumake # for bash / zsh
setenv GNUMAKE gnumake # for csh / tcsh")
"Then you will need to invoke the build shell script with the
appropriate argument for the host Common Lisp you are using:"
(<table class= "build-command-table">
(<td> (<code> "sh make.sh")))
(<td> (<code> "sh make.sh \"lisp -batch\"")))
(<td> (<code> "sh make.sh \"openmcl --batch\"")))
(<td> (<code> "sh make.sh \"clisp\""))))
" It is highly recommended that you run
the make.sh script in either a very fast terminal such as xterm (the
GNOME terminal and the OS X terminal are too slow) or that you run it
in a detached GNU screen session (use C-a d to detach the session and
screen -r to resume it). The SBCL compile produces lots of output and
your system's terminal program "
" likely slow down the compile in a drastic manner.")
(<p> "To install the SBCL binary you have built, see the
installation instructions above.")))