<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link href="style.css" rel="stylesheet" type="text/css" />
<title>Building LLDB</title>
</head>

<body>
    <div class="www_title">
      The <strong>LLDB</strong> Debugger
    </div>
    
<div id="container">
	<div id="content">
        
  <!--#include virtual="sidebar.incl"-->
  
		<div id="middle">
                <h1 class ="postheader">Continuous Integraton</h1>
                <div class="postcontent">
                        <p> The following LLVM buildbots build and test LLDB trunk:
                        <ul>
                                <li> <a href="http://lab.llvm.org:8011/builders/lldb-x86_64-debian-clang">LLDB Linux x86_64 build with Clang (automake)</a>
                                <li> <a href="http://lab.llvm.org:8011/builders/lldb-x86_64-linux">LLDB Linux x86_64 build with GCC 4.6 (automake)</a>
                                <li> <a href="http://lab.llvm.org:8011/builders/lldb-x86_64-darwin11">LLDB Mac OS X x86_64 build with Clang (XCode)</a>
                        </ul>
                </div>
                <div class="postfooter"></div>
    		<div class="post">
    			<h1 class ="postheader">Building LLDB on Mac OS X</h1>
    			<div class="postcontent">
    			    <p>Building on Mac OS X is as easy as downloading the code and building the Xcode project or workspace:</p>
                </div>
                <div class="postcontent">
                    <h2>Preliminaries</h2>
                    <ul>
                        <li>XCode 4.3 or newer requires the "Command Line Tools" component (XCode->Preferences->Downloads->Components).</li>
                        <li>Mac OS X Lion or newer requires installing <a href="http://swig.org">Swig</a>.</li>
                    </ul>
                    <h2>Building LLDB</h2>
    			    <ul>
                        <li><a href="download.html">Download</a> the lldb sources.</li>
                        <li>Follow the code signing instructions in <b>lldb/docs/code-signing.txt</b></li>
                        <li>In Xcode 3.x: <b>lldb/lldb.xcodeproj</b>, select the <b>lldb-tool</b> target, and build.</li>
                        <li>In Xcode 4.x: <b>lldb/lldb.xcworkspace</b>, select the <b>lldb-tool</b> scheme, and build.</li>
    			    </ul>
    			</div>
              	<div class="postfooter"></div>
          	</div>
    		<div class="post">
    			<h1 class ="postheader">Building LLDB on Linux</h1>
    			<div class="postcontent">
    			    <p>This document describes the steps needed to compile LLDB on most Linux systems.</a></p>
    			</div>
    			<div class="postcontent">
                <h2>Preliminaries</h2>
                <p>LLDB relies on many of the technologies developed by the larger LLVM project.
                In particular, it requires both Clang and LLVM itself in order to build.  Due to
                this tight integration the <em>Getting Started</em> guides for both of these projects
                come as prerequisite reading:</p>
			    <ul>
                    <li><a href="http://llvm.org/docs/GettingStarted.html">LLVM</a></li>
                    <li><a href="http://clang.llvm.org/get_started.html">Clang</a></li>
                </ul>
                <p>Supported compilers for building LLDB on Linux include:</p>
                <ul>
                  <li>Clang 3.2</li>
                  <li><a href="http://gcc.gnu.org">GCC</a> 4.6.2 (later versions should work as well)</li>
                </ul>
                <p>It is recommended to use libstdc++ 4.6 (or higher) to build LLDB on Linux, but using libc++ is also known to work.</p>
                <p>In addition to any dependencies required by LLVM and Clang, LLDB needs a few
                development packages that may also need to be installed depending on your
                system.  The current list of dependencies are:</p>
    			<ul>
                    <li><a href="http://swig.org">Swig</a></li>
                    <li><a href="http://www.thrysoee.dk/editline">libedit</a></li>
                    <li><a href="http://www.python.org">Python</a></li>
                </ul>
                <p>So for example, on a Fedora system one might run:</p>
                <code>&gt; yum install swig python-devel libedit-devel</code>
                <p>On an Ubuntu system one might run:</p>
                <code>&gt; sudo apt-get install swig python-dev libedit-dev </code>
                <h2 >Building LLDB</h2>
                <p>We first need to checkout the source trees into the appropriate locations.  Both
                Clang and LLDB build as subprojects of LLVM.  This means we will be checking out
                the source for both Clang and LLDB into the <tt>tools</tt> subdirectory of LLVM.  We
                will be setting up a directory hierarchy looking something like this:</p>
                <p>
                <pre><tt>  
                  llvm
                  |
                  `-- tools
                      |
                      +-- clang
                      |
                      `-- lldb
                </tt></pre>
                </p>
                <p>For reference, we will call the root of the LLVM project tree <tt>$llvm</tt>, and the
                roots of the Clang and LLDB source trees <tt>$clang</tt> and <tt>$lldb</tt> respectively.</p>
                <p>Change to the directory where you want to do development work and checkout LLVM:</p>
                <code>&gt; svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm</code>
                
                <p>Now switch to LLVM&#8217;s tools subdirectory and checkout both Clang and LLDB:</p>
                <code>&gt; cd $llvm/tools
                <br>&gt; svn co http://llvm.org/svn/llvm-project/cfe/trunk clang
                <br>&gt; svn co http://llvm.org/svn/llvm-project/lldb/trunk lldb
                </code>
                
                <p>In general, building the LLDB trunk revision requires trunk revisions of both 
                LLVM and Clang.
                <p>It is highly recommended that you build the system out of tree.  Create a second
                build directory and configure the LLVM project tree to your specifications as
                outlined in LLVM&#8217;s <em>Getting Started Guide</em>.  A typical build procedure
                might be:</p>
                <code>&gt; cd $llvm/..
                  <br>&gt; mkdir build
                  <br>&gt; cd build
                </code>
                <h2>To build with CMake</h2>
                <p>Using CMake is documented on the <a href="http://llvm.org/docs/CMake.html">Building LLVM with CMake</a>
                   page. Building LLDB is possible using one of the following generators:
                </p>
                <ul>
                  <li> Ninja </li>
                  <li> Unix Makefiles </li>
                </ul>
                <h3>Using CMake + Ninja</h3>
                <p>Ninja is the fastest way to build LLDB! In order to use ninja, you need to have recent versions of CMake and
                   ninja on your system. To build using ninja:
                </p>
                <code>
                  <br>&gt; cmake -C .. -G Ninja
                  <br>&gt; ninja lldb
                  <br>&gt; ninja check-lldb
                </code>
                <h3>Using CMake + Unix Makefiles</h3>
                <p>If you do not have Ninja, you can still use CMake to generate Unix Makefiles that build LLDB:</p>
                <code>
                  <br>&gt; cmake -C ..
                  <br>&gt; make lldb
                  <br>&gt; make check-lldb
                </code>
                <h2>To build with autoconf</h2>
                <p>If you do not have CMake, it is still possible to build LLDB using the autoconf build system. If you are using
                   Clang or GCC 4.7+, run:</p>
                <code>
                  <br>&gt; $llvm/configure --enable-cxx11
                  <br>&gt; make </code>
                <p>Or, if you are using a version of GCC that does not support the <tt>-std=c++11</tt> option:</p>
                <code>
                  <br>&gt; $llvm/configure
                  <br>&gt; make CXXFLAGS=-std=c++0x</code>
                <p> To run the LLDB test suite, run:</p>
                <code>
                  <br>&gt; make -C tools/lldb/test</code>
                <p>Note that once both LLVM and Clang have been configured and built it is not
                necessary to perform a top-level <tt>make</tt> to rebuild changes made only to LLDB.
                You can run <tt>make</tt> from the <tt>build/tools/lldb</tt> subdirectory as well.</p>
                <p> If you wish to build with libc++ instead of libstdc++ (the default), run configure with the
                <tt>--enable-libcpp</tt> flag.</p>
                <p> If you wish to build a release version of LLDB, run configure with the <tt>--enable-optimized</tt> flag.</p>

                <h2>Additional Notes</h2>
                <p>LLDB has a Python scripting capability and supplies its own Python module named <tt>lldb</tt>.
                If a script is run inside the command line <tt>lldb</tt> application, the Python module
                is made available automatically.  However, if a script is to be run by a Python interpreter
                outside the command line application, the <tt>PYTHONPATH</tt> environment variable can be used
                to let the Python interpreter find the <tt>lldb</tt> module. 
                <p>The correct path can be obtained by invoking the command line <tt>lldb</tt> tool with the -P flag:</p>
                <code>&gt; export PYTHONPATH=`$llvm/build/Debug+Asserts/bin/lldb -P`</code>
                <p>If you used a different build directory or made a release build, you may need to adjust the
                above to suit your needs. To test that the lldb Python module
                is built correctly and is available to the default Python interpreter, run:</p>
                <code>&gt; python -c 'import lldb'</code></p>
                </div>
              	<div class="postfooter"></div>
          	</div>
      	</div>
	</div>
</div>
</body>
</html>
