<!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 Integration</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-ubuntu-14.04-cmake">LLDB Ubuntu 14.04 x86_64 (CMake, clang-3.5+/gcc-4.8, i386/x86_64)</a>
              </li>
              <li> <a href="http://lab.llvm.org:8011/builders/lldb-x86_64-ubuntu-14.04-android">LLDB Ubuntu 14.04 x86_64->Android (CMake, gcc-4.9 arm/arm64/x86)</a>
              </li>
              <li> <a href="http://lab.llvm.org:8011/builders/lldb-x86_64-darwin-13.4">LLDB Mac OS X 10.9.5 x86_64 (Xcode)</a>
              </li>
              <li> <a href="http://lab.llvm.org:8011/builders/lldb-x86-windows-msvc">LLDB Windows Server 2008 x86 (CMake, MSVS 2013, Windows SDK 8.1, no tests)</a>
              </li>
              <li> <a href="http://lab.llvm.org:8011/builders/lldb-x86-win7-msvc">LLDB Windows 7 x86 (CMake, MSVS 2013, Windows SDK 8.1, no tests)</a>
              </li>
              <li> <a href="http://lab.llvm.org:8011/builders/lldb-x86_64-debian-clang">LLDB Ubuntu 14.04 x86_64 build (automake, Clang 3.4, VMware Workstation)</a>
              </li>
              <li> <a href="http://lab.llvm.org:8011/builders/lldb-x86_64-freebsd">LLDB FreeBSD x86_64 (CMake)</a>
              </li>
              <li> <a href="http://lab.llvm.org:8011/builders/lldb-amd64-ninja-netbsd7">LLDB NetBSD-7.0 amd64 (GCC 4.8.5, Ninja)</a>
              </li>
            </ul>
          </p>
        </div>
        <div class="postfooter"></div>
        <div class="post">
          <h1 class="postheader">Building LLDB</h1>
          <ul>
            <li><a href="#BuildingLldbOnWindows">Building LLDB on Windows</a></li>
            <li><a href="#BuildingLldbOnMacOSX">Building LLDB on Mac OSX</a></li>
            <li><a href="#BuildingLldbOnLinux">Building LLDB on Linux, FreeBSD and NetBSD</a></li>
          </ul>
        </div>
        <div class="postfooter"></div>
        <div class="post" id="BuildingLldbOnWindows">
          <h1 class="postheader">Building LLDB on Windows</h1>
          <div class="postcontent">
            <h2>Required Dependencies</h2>
            <ul>
              <li>Visual Studio 2015 or greater</li>
              <li>Windows SDK 8.0 or higher.  In general it is best to use the latest available version.</li>
              <li>
                <a href="https://www.python.org/downloads/windows/">Python 3.5 or higher</a> or higher.  Earlier
                versions of Python can be made to work by compiling your own distribution from source,
                but this workflow is unsupported and you are own your own.
              </li>
              <li><a href="https://ninja-build.org/">Ninja build tool</a> (strongly recommended)</li>
              <li><a href="http://gnuwin32.sourceforge.net/">GnuWin32</a></li>
              <li><a href="http://www.swig.org/download.html">SWIG for Windows (version 3+)</a></li>
            </ul>
            <h2>Optional Dependencies</h2>
            <ul>
              <li><a href="https://github.com/Microsoft/PTVS/releases">Python Tools for Visual Studio</a>.  If you
              plan to debug test failures or even write new tests at all, PTVS is an indispensable debugging extension
              to VS that enables full editing and debugging support for Python (including mixed native/managed debugging)</li>
            </ul>
            <h2 id="WindowsPreliminaries">Preliminaries</h2>
            <p>
              This section describes how to set up your system and install the required dependencies such that
              they can be found when needed during the build process.  The steps outlined here only need to
              be performed once.
            </p>
            <ol>
              <li><p>Install Visual Studio and the Windows SDK.</p></li>
              <li><p>Install GnuWin32, making sure <code>&lt;GnuWin32 install dir&gt;\bin</code> is added to your <code>PATH</code> environment variable.</p></li>
              <li><p>Install SWIG for Windows, making sure <code>&lt;SWIG install dir&gt;</code> is added to your <code>PATH</code> environment variable.</p></li>
            </ol>
            <h2>Building LLDB</h2>
            <p>
              Any command prompt from which you build LLDB should have a valid Visual Studio environment setup.
              This means you should run <code>vcvarsall.bat</code> or open an appropriate Visual Studio Command Prompt
              corresponding to the version you wish to use.
            </p>
            <p>Finally, when you are ready to build LLDB, generate CMake with the following command line:</p>
            <code>cmake -G Ninja &lt;cmake variables&gt; &lt;path to root of llvm src tree&gt;</code>
            <p>and run <code>ninja</code> to build LLDB. Information about running the LLDB test suite can be found on the <a href="test.html">test</a> page.</p>
            <p>
              Following is a description of some of the most important CMake variables which you are likely to encounter.
              A variable <code>FOO</code> is set by adding <code>-DFOO=value</code> to the CMake command line.
            </p>
            <ul>
              <li>
                <b>LLDB_TEST_DEBUG_TEST_CRASHES</b> (Default=0): If set to 1, will cause Windows to generate a crash
                dialog whenever lldb.exe or the python extension module crashes while running the test suite.  If set to
                0, LLDB will silently crash.  Setting to 1 allows a developer to attach a JIT debugger at the time of
                a crash, rather than having to reproduce a failure or use a crash dump.
              </li>
              <li>
                <b>PYTHON_HOME</b> (Required): Path to the folder where the Python distribution is installed.  For example,
                C:\Python35
              </li>
              <li>
                <b>LLDB_RELOCATABLE_PYTHON</b> (Default=0): When this is 0, LLDB will bind statically to the location specified
                in the PYTHON_HOME CMake variable, ignoring any value of PYTHONHOME set in the environment.  This is most useful for
                developers who simply want to run LLDB after they build it.  If you wish to move a build of LLDB to a different
                machine where Python will be in a different location, setting LLDB_RELOCATABLE_PYTHON to 1 will cause Python to
                use its default mechanism for finding the python installation at runtime (looking for installed Pythons, or using
                the PYTHONHOME environment variable if it is specified).
              </li>
              <li>
                <b>LLDB_TEST_C_COMPILER</b> or <b>LLDB_TEST_CXX_COMPILER</b>: The test suite needs to be able to find a copy of clang.exe
                that it can use to compile inferior programs.  Note that MSVC is not supported here, it <strong>must</strong> be a path to a
                clang executable.  Note that using a release clang.exe is strongly recommended here, as it will make the test suite run much faster.
                This can be a path to any recent clang.exe, including one you built yourself.  These variables are ignored unless the respective
                <strong>LLDB_TEST_USE_CUSTOM_C_COMPILER</strong> and <strong>LLDB_TEST_USE_CUSTOM_CXX_COMPILER</strong> are set to ON.
              </li>
            </ul>
            Sample command line:<br/>
            <code>cmake -G Ninja -DLLDB_TEST_DEBUG_TEST_CRASHES=1 -DPYTHON_HOME=C:\Python35 -DLLDB_TEST_USE_CUSTOM_C_COMPILER=ON -DLLDB_TEST_C_COMPILER=d:\src\llvmbuild\ninja_release\bin\clang.exe ..\..\llvm</code>
            <h2>Working with both Ninja and MSVC</h2>
            <p>
              Compiling with <code>ninja</code> is both faster and simpler than compiling with MSVC, but chances are you still want
              to debug LLDB with MSVC (at least until we can debug LLDB on Windows with LLDB!).  One solution to this is to run 
              <code>cmake</code> twice and generate the output into two different folders.  One for compiling (the <code>ninja</code>
              folder), and one for editing / browsing / debugging (the MSVC folder).
            </p>
            <p>
              To do this, simply run <code>`cmake -G Ninja &lt;arguments&gt;`</code> from one folder, and 
              <code>`cmake -G "Visual Studio 14 2015" &lt;arguments&gt;`</code> in another folder.  Then you can open the .sln file
              in Visual Studio, set <code>lldb</code> as the startup project, and use F5 to run it.  You need only edit the project
              settings to set the executable and the working directory to point to binaries inside of the <code>ninja</code> tree.
            </p>
          </div>
        </div>
        <div class="post" id="BuildingLldbOnMacOSX">
          <h1 class="postheader">Building LLDB on Mac OS X</h1>
          <div class="postcontent">
            <p> There are two ways to build LLDB on Mac OS X: Using Xcode and using CMake
          </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 with Xcode</h2>
            <p>Building on Mac OS X with Xcode is as easy as downloading the code and building the Xcode project or workspace:</p>
            <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>
            <h2>Building LLDB with CMake</h2>
            <p> First download the LLVM, Clang, and LLDB sources. Refer to <a href="source.html">this page</a> for precise instructions on this step.</p>
            <p> Refer to the code signing instructions in <b>lldb/docs/code-signing.txt</b> for info on codesigning debugserver during the build.</p>
            <p> Using CMake is documented on the <a href="http://llvm.org/docs/CMake.html">Building LLVM with CMake</a> page.
            Ninja is the recommended generator to use when building LLDB with CMake.</p>
            <code>
              &gt; cmake $PATH_TO_LLVM -G Ninja
              <br />&gt; ninja lldb
            </code>
            <p>
               As noted in the "Building LLVM with CMake" page mentioned above, you can pass
               variables to cmake to change build behavior. If LLDB is built as a part of LLVM,
               then you can pass LLVM-specific CMake variables to cmake when building LLDB.
            </p>
            <p>Here are some commonly used LLDB-specific CMake variables:</p>
            <ul>
              <li><code><b>LLDB_EXPORT_ALL_SYMBOLS</b>:BOOL </code>: Exports all symbols. Useful in conjunction with CMAKE_BUILD_TYPE=Debug.</li>
              <li><code><b>LLDB_BUILD_FRAMEWORK</b>:BOOL </code>: Builds LLDB.framework as Xcode would</li>
              <li><code><b>LLDB_CODESIGN_IDENTITY</b>:STRING </code>: Determines the codesign identity to use. An empty string means skip building debugserver to avoid codesigning.</li>
            </ul>
          </div>
          <div class="postfooter"></div>
        </div>
        <div class="post" id="BuildingLldbOnLinux">
          <h1 class="postheader">Building LLDB on Linux, FreeBSD and NetBSD</h1>
          <div class="postcontent">
            <p>This document describes the steps needed to compile LLDB on most Linux systems, FreeBSD and NetBSD.</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>
              On FreeBSD the base system Clang and libc++ may be used to build LLDB,
              or the GCC port or package.
            </p>
            <p>
              On NetBSD the base system GCC and libstdc++ are used to build LLDB,
              Clang/LLVM and libc++ should also 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> (Linux only)</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 libedit-devel libxml2-devel ncurses-devel python-devel swig</code>
            <p>On a Debian or Ubuntu system one might run:</p>
            <code>&gt; sudo apt-get install build-essential subversion swig python2.7-dev libedit-dev libncurses5-dev </code>
            <p>or</p>
            <code>&gt; sudo apt-get build-dep lldb-3.3 # or lldb-3.4</code>
            <p>On FreeBSD one might run:</p>
            <code>&gt; pkg install swig python</code>
            <p>On NetBSD one might run:</p>
            <code>&gt; pkgin install swig python27 cmake ninja-build</code>
            <p>If you wish to build the optional reference documentation, additional dependencies are required:</p>
            <ul>
              <li> Graphviz (for the 'dot' tool).
              </li>
              <li> doxygen (only if you wish to build the C++ API reference)
              </li>
              <li> epydoc (only if you wish to build the Python API reference)
              </li>
            </ul>
            <p>To install the prerequisites for building the documentation (on Debian/Ubuntu) do:</p>
            <code>
              <br />&gt; sudo apt-get install doxygen graphviz
              <br />&gt; sudo pip install epydoc # or install package python-epydoc
            </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>
            <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>
              &gt; cmake ../llvm -G Ninja
              <br />&gt; ninja lldb
              <br />&gt; ninja check-lldb
            </code>
            <p>
              If you want to debug the lldb that you're building -- that is, build it with debug info enabled -- pass
              two additional arguments to cmake before running ninja:
            </p>
            <code>
              &gt; cmake ../llvm -G Ninja -DLLDB_EXPORT_ALL_SYMBOLS=1 -DCMAKE_BUILD_TYPE=Debug
            </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>
              &gt; cmake ..
              <br />&gt; make
              <br />&gt; make check-lldb
            </code>
            <h2>Building API reference documentation</h2>
            <p>
              LLDB exposes a C++ as well as a Python API. To build the reference documentation for these two APIs, ensure you have
              the required dependencies installed, and build the <tt>lldb-python-doc</tt> and <tt>lldb-cpp-doc</tt> CMake targets.
            </p>
            <p> The output HTML reference documentation can be found in <tt>&lt;build-dir&gt;/tools/lldb/docs/</tt>.</p><p>
              <h2>Additional Notes</h2>
            </p>
            <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>
            <p>
              Current stable NetBSD release doesn't ship with libpanel(3), therefore it's required to disable curses(3) support with
              the <tt>-DLLDB_DISABLE_CURSES:BOOL=TRUE</tt> option. To make sure check if <tt>/usr/include/panel.h</tt> exists in your
              system.
            </p>
            <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>

            <h2 id="cross-compilation">Cross-compiling LLDB</h2>
            <p>
              In order to debug remote targets running different architectures than your host, you
              will need to compile LLDB (or at least the server component) for the target. While
              the easiest solution is to just compile it locally on the target, this is often not
              feasible, and in these cases you will need to cross-compile LLDB on your host.
            </p>

            <p>
              Cross-compilation is often a daunting task and has a lot of quirks which depend on
              the exact host and target architectures, so it is not possible to give a universal
              guide which will work on all platforms. However, here we try to provide an overview
              of the cross-compilation process along with the main things you should look out for.
            </p>

            <p>
              First, you will need a working toolchain which is capable of producing binaries for
              the target architecture. Since you already have a checkout of clang and lldb, you
              can compile a host version of clang in a separate folder and use that.
              Alternatively you can use system clang or even cross-gcc if your distribution
              provides such packages (e.g., <code>g++-aarch64-linux-gnu</code>
              on Ubuntu).
            </p>

            <p>
              Next, you will need a copy of the required target headers and libraries on your
              host. The libraries can be usually obtained by copying from the target machine,
              however the headers are often not found there, especially in case of embedded
              platforms. In this case, you will need to obtain them from another source, either
              a cross-package if one is available, or cross-compiling the respective library from
              source. Fortunately the list of LLDB dependencies is not big and if you are only
              interested in the server component, you can reduce this even further by passing the
              appropriate cmake options, such as:
            </p>
            <code>
              -DLLDB_DISABLE_LIBEDIT=1<br/>
              -DLLDB_DISABLE_CURSES=1<br/>
              -DLLDB_DISABLE_PYTHON=1<br/>
              -DLLVM_ENABLE_TERMINFO=0
            </code>
            <p>
              In this case you, will often not need anything other than the standard C and C++
              libraries.
            </p>

            <p>
              Once all of the dependencies are in place, it's just a matter of configuring the
              build system with the locations and arguments of all the necessary tools. The most
              important cmake options here are:
            </p>
            <dl>
                <dt>CMAKE_CROSSCOMPILING</dt>
                <dd>Set to 1 to enable cross-compilation.</dd>

                <dt>CMAKE_LIBRARY_ARCHITECTURE</dt>
                <dd>Affects the cmake search path when looking for libraries. You may need to set
                this to your architecture triple if you do not specify all your include and
                library paths explicitly.</dd>

                <dt>CMAKE_C_COMPILER, CMAKE_CXX_COMPILER</dt>
                <dd>C and C++ compilers for the target architecture</dd>

                <dt>CMAKE_C_FLAGS, CMAKE_CXX_FLAGS</dt>
                <dd>The flags for the C and C++ target compilers. You may need to specify the
                exact target cpu and abi besides the include paths for the target headers.</dd>

                <dt>CMAKE_EXE_LINKER_FLAGS</dt>
                <dd>The flags to be passed to the linker. Usually just a list of library search
                paths referencing the target libraries.</dd>

                <dt>LLVM_TABLEGEN, CLANG_TABLEGEN</dt>
                <dd>Paths to llvm-tblgen and clang-tblgen for the <em>host</em> architecture. If
                you already have built clang for the host, you can point these variables to the
                executables in your build directory. If not, you will need to build the
                llvm-tblgen and clang-tblgen host targets at least.<dd>

                <dt>LLVM_HOST_TRIPLE</dt>
                <dd>The triple of the system that lldb (or lldb-server) will run on. Not setting
                this (or setting it incorrectly) can cause a lot of issues with remote debugging
                as a lot of the choices lldb makes depend on the triple reported by the remote
                platform.</dd>
            </dl>
            <p>
              You can of course also specify the usual cmake options like CMAKE_BUILD_TYPE, etc.
            </p>

            <h3>Example 1: Cross-compiling for linux arm64 on Ubuntu host</h3>

            <p>
              Ubuntu already provides the packages necessary to cross-compile LLDB for arm64. It
              is sufficient to install packages gcc-aarch64-linux-gnu, g++-aarch64-linux-gnu,
              binutils-aarch64-linux-gnu. Then it is possible to prepare the cmake build with the
              following parameters:
            </p>
            <code>
              -DCMAKE_CROSSCOMPILING=1 \<br/>
              -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc \<br/>
              -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ \<br/>
              -DLLVM_HOST_TRIPLE=aarch64-unknown-linux-gnu \<br/>
              -DLLVM_TABLEGEN=&lt;path-to-host&gt;/bin/llvm-tblgen \<br/>
              -DCLANG_TABLEGEN=&lt;path-to-host&gt;/bin/clang-tblgen \<br/>
              -DLLDB_DISABLE_PYTHON=1 \<br/>
              -DLLDB_DISABLE_LIBEDIT=1 \<br/>
              -DLLDB_DISABLE_CURSES=1
            </code>

            <p>
              An alternative (and recommended) way to compile LLDB is with clang. Unfortunately,
              clang is not able to find all the include paths necessary for a successful
              cross-compile, so we need to help it with a couple of CFLAGS options. In my case it
              was sufficient to add the following arguments to CMAKE_C_FLAGS and CMAKE_CXX_FLAGS
              (in addition to changing CMAKE_C(XX)_COMPILER to point to clang compilers):
            </p>
            <code>
              -target aarch64-linux-gnu \<br/>
              -I /usr/aarch64-linux-gnu/include/c++/4.8.2/aarch64-linux-gnu \<br/>
              -I /usr/aarch64-linux-gnu/include
            </code>

            <p>
              If you wanted to build a full version of LLDB and avoid passing
              -DLLDB_DISABLE_PYTHON and other options, you would need to obtain the target
              versions of the respective libraries. The easiest way to achieve this is to use the
              <code>qemu-debootstrap</code> utility, which can prepare a system image using qemu
              and chroot to simulate the target environment. Then you can install the necessary
              packages in this environment (python-dev, libedit-dev, etc.) and point your
              compiler to use them using the correct -I and -L arguments.
            </p>

            <h3>Example 2: Cross-compiling for Android on Linux</h3>

            <p>
              In the case of Android, the toolchain and all required headers and
              libraries are available in the Android NDK.
            </p>

            <p>
              The NDK also contains a cmake toolchain file, which makes
              configuring the build much simpler.  The compiler, include and
              library paths will be configured by the toolchain file and all you
              need to do is to select the architecture (ANDROID_ABI) and
              platform level (ANDROID_PLATFORM, should be at least 21). You will
              also need to set ANDROID_ALLOW_UNDEFINED_SYMBOLS=On, as the
              toolchain file defaults to "no undefined symbols in shared
              libraries", which is not compatible with some llvm libraries. The
              first version of NDK which supports this approach is r14.
            </p>
            <p>
              For example, the following arguments are sufficient to configure
              an android arm64 build:
            </p>
            <code>
              -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \<br/>
              -DANDROID_ABI=arm64-v8a \<br/>
              -DANDROID_PLATFORM=android-21 \<br/>
              -DANDROID_ALLOW_UNDEFINED_SYMBOLS=On \<br/>
              -DLLVM_HOST_TRIPLE=aarch64-unknown-linux-android \<br/>
              -DCROSS_TOOLCHAIN_FLAGS_NATIVE='-DCMAKE_C_COMPILER=cc;-DCMAKE_CXX_COMPILER=c++' <br/>
            </code>

            <p>
              Note that currently only lldb-server is functional on android. The
              lldb client is not supported and unlikely to work.
            </p>
          </div>
          <div class="postfooter"></div>
        </div>
      </div>
    </div>
  </div>
</body>
</html>
