about summary refs log tree commit diff homepage
diff options
context:
space:
mode:
authorCristian Cadar <cristic@cs.stanford.edu>2012-04-05 17:20:15 +0000
committerCristian Cadar <cristic@cs.stanford.edu>2012-04-05 17:20:15 +0000
commit4ad66e2e348597ffb814c23232d2ca453785f9d6 (patch)
tree2d801316a28915eda8002687c665466dcac8e3fa
parentc657b4cd41b00d4c4683c08a25a63ff4f3f11450 (diff)
downloadklee-4ad66e2e348597ffb814c23232d2ca453785f9d6.tar.gz
Updated and simplified installation instructions.
Switched to LLVM 2.9 and to SVN version 940 of STP.


git-svn-id: https://llvm.org/svn/llvm-project/klee/trunk@154107 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--www/GetStarted.html195
1 files changed, 88 insertions, 107 deletions
diff --git a/www/GetStarted.html b/www/GetStarted.html
index 7ce750cc..6de3e429 100644
--- a/www/GetStarted.html
+++ b/www/GetStarted.html
@@ -20,8 +20,6 @@
 <h3>
 <a href="#cde">1. Trying out KLEE without installing any dependencies</a> <br/>
 <a href="#build">2. Building KLEE</a> <br/>
-<a href="#posix">3. Building KLEE with POSIX runtime support</a> <br/>
-<a href="#stp">4. Building KLEE with a more recent version of STP</a>
 </h3>
   
 
@@ -54,24 +52,34 @@ The only requirement is that you are running a reasonably-modern x86-Linux distr
 
 <h2 id="build">Building KLEE</h2>
 
-<p>If you would like to try KLEE, the current procedure for building is
-below.</p>
-KLEE is built on LLVM; the first steps are to get a working LLVM
-installation. See <a href="http://llvm.org/docs/GettingStarted.html">Getting
-Started with the LLVM System</a> for more information.
 
-<p><b>NOTE:</b> KLEE is only currently tested on Linux and Darwin
-x86-32 and x86-64 targets, using LLVM 2.8. KLEE will not work with an
-older LLVM (e.g., 2.5), and might not work with newer versions of LLVM
-(e.g., 2.9 or 3.0) <p>
+<p>The current procedure for building is outlined below.</p>
 
 <ol>
+<li><b>Build LLVM 2.9:</b>
+
+<p>
+KLEE is built on top of <a href="http://llvm.org">LLVM</a>; the first
+steps are to get a working LLVM installation.
+See <a href="http://llvm.org/docs/GettingStarted.html">Getting Started
+with the LLVM System</a> for more information.
+</p>
+
+<p>
+<b>NOTE:</b> KLEE is currently tested only on Linux x86-32 and x86-64
+targets, using <b>LLVM 2.9</b>.  KLEE will not work with older LLVM
+versions (e.g., 2.5), and might not work with newer versions (e.g.,
+3.0).
+</p>
+
+
+<ol type="a">
   <li>Install llvm-gcc:
     <ul>
-      <li>Download and install the LLVM 2.8 release of <tt>llvm-gcc</tt>
+      <li>Download and install the LLVM 2.9 release of <tt>llvm-gcc</tt>
         from <a href="http://llvm.org/releases/download.html">here</a>.  
 
-	<br/><b>Add <tt>llvm-gcc</tt> to your <tt>PATH</tt></b>.  It
+	<br/>Add <tt>llvm-gcc</tt> to your <tt>PATH</tt>.  It
         is important to do this first so that <tt>llvm-gcc</tt> is
         found in subsequent <tt>configure</tt>
         steps. <tt>llvm-gcc</tt> will be used later to compile
@@ -84,14 +92,11 @@ older LLVM (e.g., 2.5), and might not work with newer versions of LLVM
     </ul>
   </li>
 
-  <li><a href="http://llvm.org/releases/download.html#2.8">Download and build
-      LLVM 2.8</a> (you may also use SVN head, but klee may not always be
-      up-to-date with LLVM API changes).
-    
+  <li>Download and build LLVM 2.9:    
     <div class="instr">
-      $ curl -O http://llvm.org/releases/2.8/llvm-2.8.tgz <br/>
-      $ tar zxvf llvm-2.8.tgz <br/>
-      $ cd llvm-2.8 <br/>
+      $ curl -O http://llvm.org/releases/2.9/llvm-2.9.tgz <br/>
+      $ tar zxvf llvm-2.9.tgz <br/>
+      $ cd llvm-2.9 <br/>
       $ ./configure --enable-optimized --enable-assertions<br/>
       $ make
     </div>
@@ -99,62 +104,44 @@ older LLVM (e.g., 2.5), and might not work with newer versions of LLVM
     (the <tt>--enable-optimized</tt> configure argument is not necessary, but
     KLEE runs very slowly in Debug mode).
   </li>
-  
-  <li>Checkout KLEE (to any path you like):
-    <div class="instr">
-      $ svn co http://llvm.org/svn/llvm-project/klee/trunk klee
-    </div>
-      Alternatively, if you prefer to use git there is also a
-      read-only git mirror, which syncs automatically with each
-      Subversion commit. You can do a git clone of KLEE via:
-    <div class="instr">
-      $ git clone http://llvm.org/git/klee.git
-    </div>
-  </li>
-  
-  <li>Configure KLEE (from the KLEE source directory): 
-    <div class="instr">
-      $ ./configure --with-llvm=<i>path/to/llvm</i>
-    </div>
-    
-    <p>This assumes that you compiled LLVM in-place.  If you used a
-      different directory for the object files then use:
-      <div class="instr">
-	$ ./configure --with-llvmsrc=<i>path/to/llvm/src</i> --with-llvmobj=<i>path/to/llvm/obj</i>
-      </div>
-  </li>
+</li>
+</ol>
 
-  <li>Build KLEE (from the KLEE source directory):
-    <div class="instr">
-      $ make ENABLE_OPTIMIZED=1
-    </div>
-  </li>
 
-  <li>Run the regression suite to verify your build:
-    <div class="instr">
-      $ make check<br/>
-      $ make unittests<br/>
-    </div>
-  </li>
+<li> <b>Build STP:</b>
 
-  <li>You're ready to go!  Go to the <a href="Tutorials.html">Tutorials</a> page
-  to try KLEE.</li>
-</ol>
+<p>KLEE is based on
+the <a href="http://sites.google.com/site/stpfastprover/">STP</a>
+constraint solver.  STP does not make frequent releases, and its
+Subversion repository is under constant development and may be
+unstable.  The instructions below are for a particular revision which
+we have used successfully, but you can try a more recent revision by
+changing or removing the <tt>-r</tt> argument to the <tt>svn co</tt>
+command.  (Please let us know if you have successfully and extensively
+used KLEE with a more recent version of STP.)
+</p>
 
-<h2 id="posix">Building KLEE with POSIX runtime support</h2>
+<div class="instr">
+  $ svn co -r 940 https://stp-fast-prover.svn.sourceforge.net/svnroot/stp-fast-prover/trunk/stp stp <br/>
+  $ cd stp <br/>
+  $ ./scripts/configure --with-prefix=<i>path/to/stp/install</i> --with-cryptominisat2 <br/>
+  $ make OPTIMIZE=-O2 CFLAGS_M32= install
+</div>
+</li>
 
-<p>The steps above are enough for building and testing KLEE on closed programs
-(programs that don't use any external code such as C library
-functions). However, if you want to use KLEE to run real programs you will want
-to enable the KLEE POSIX runtime, which is built on top of the uClibc C
-library.</p>
+<li>[Optional] <b>Build uclibc and the POSIX environment model:</b>
 
-<ol>
-  <li>Download KLEE's uClibc:
-    <ul>
-      <li>
-        KLEE uses a version of <a href="http://uclibc.org">uClibc</a>
-        which has been modified slightly for use with KLEE.  
+<p>
+By default, KLEE works on closed programs (programs that don't use any
+external code such as C library functions). However, if you want to
+use KLEE to run real programs you will want to enable the KLEE POSIX
+runtime, which is built on top of the uClibc C library.
+</p>
+
+<ol type="a">
+  <li>Download KLEE's uClibc. KLEE uses a version
+        of <a href="http://uclibc.org">uClibc</a> which has been
+        modified slightly for our purposes. 
 	<ul>
 	  <li>A version that works on 32-bit Linux can be found
 	  <a href="http://www.doc.ic.ac.uk/~cristic/klee/klee-uclibc-i386.html">here</a>
@@ -163,66 +150,60 @@ library.</p>
 	    <a href="http://www.doc.ic.ac.uk/~cristic/klee/klee-uclibc-x64.html">here</a>
 	  </li>
 	</ul>
-      </li>
-    </ul>
   </li>
   
   <li>Build uClibc with <tt>llvm-gcc</tt>:
     <div class="instr">
-      $ tar zxvf klee-uclibc-0.01.tgz <br/>
+      $ tar zxvf klee-uclibc-0.02.tgz <br/>
       $ ./configure --with-llvm=<i>path/to/llvm</i> <br/>
       $ make <br/>
     </div>
 
-    <p><b>NOTE:</b> KLEE's uClibc is shipped in a pre-configured for x86-32. If
-      you are on a different target (e.g. x86-64), you will need to run 'make
-      config' and select the correct target. The defaults for the other uClibc
-      configuration variables should be fine.<p>
+    <p><b>NOTE:</b> If you are on a different target (i.e., not i386
+      or x64), you will need to run <tt>make config</tt> and select the
+      correct target. The defaults for the other uClibc configuration
+      variables should be fine.<p>
   </li>
 
-  <li>Configure KLEE with uClibc/POSIX support:
+  </ol>
+
+
+  <li><b>Checkout KLEE (to any path you like):</b>
     <div class="instr">
-      $ ./configure --with-llvm=<i>path/to/llvm</i> --with-uclibc=<i>path/to/klee-uclibc</i> --enable-posix-runtime
+      $ svn co http://llvm.org/svn/llvm-project/klee/trunk klee
+    </div>
+      Alternatively, if you prefer to use git there is also a
+      read-only git mirror, which syncs automatically with each
+      Subversion commit. You can do a git clone of KLEE via:
+    <div class="instr">
+      $ git clone http://llvm.org/git/klee.git
     </div>
   </li>
-
-  <li>Rebuild KLEE and run <tt>make check</tt> and verify that the POSIX tests
-    run correctly.
+  
+  <li><b>Configure KLEE:</b>
+    <p>From the KLEE source directory, run:</p>
+    <div class="instr">
+      $ ./configure --with-llvm=<i>path/to/llvm</i> --with-stp=<i>path/to/stp/install</i> --with-uclibc=<i>path/to/klee-uclibc</i> --enable-posix-runtime
+    </div>
+    
+    <p><b>NOTE:</b> If you skipped step 3, simply remove the <tt>--with-uclibc</tt> and <tt>--enable-posix-runtime options</tt>. </p>
   </li>
-</ol>
-
-<h2 id="stp">Building KLEE with a more recent version of STP</h2>
 
-<p>If your benchmarks are running slowly or not terminating it may
-be worth trying a more recent version of KLEE's constraint solver
-<a href="http://sites.google.com/site/stpfastprover/">STP</a>,
-which offers performance improvements over the version supplied
-with KLEE.</p>
-
-<p>STP does not make frequent releases, and its Subversion repository
-is under constant development and may be unstable.  The instructions
-below are for a particular revision which is known to pass the KLEE
-test suite, but you can try a more recent revision (at your own risk)
-by changing or removing the <tt>-r</tt> argument to the <tt>svn
-co</tt> command.</p>
-
-<ol>
-  <li>Download and build STP.
+  <li><b>Build KLEE:</b>
     <div class="instr">
-      $ svn co -r 940 https://stp-fast-prover.svn.sourceforge.net/svnroot/stp-fast-prover/trunk/stp stp <br/>
-      $ cd stp <br/>
-      $ scripts/configure --with-prefix=<i>path/to/stp/inst</i> --with-cryptominisat2 <br/>
-      $ make OPTIMIZE=-O2 CFLAGS_M32= install
+      $ make ENABLE_OPTIMIZED=1
     </div>
   </li>
 
-  <li>Configure KLEE:
+  <li>Run the regression suite to verify your build:
     <div class="instr">
-      $ ./configure --with-llvm=<i>path/to/llvm</i> --with-stp=<i>path/to/stp/inst</i>
+      $ make check<br/>
+<!--      $ make unittests<br/>-->
     </div>
   </li>
 
-  <li>Rebuild KLEE.</li>
+  <li>You're ready to go!  Go to the <a href="Tutorials.html">Tutorials</a> page
+  to try KLEE.</li>
 </ol>
 
 </div>