Michael van der Westhuizen: Update instructions for building on Linux.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@174733 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Howard Hinnant 2013-02-08 19:10:36 +00:00
parent af69f47e86
commit af4d161908

View File

@ -259,6 +259,81 @@ End of search list.
</p>
</p>
<!--=====================================================================-->
<h2>Build on Linux using CMake and libc++abi.</h2>
<!--=====================================================================-->
<p>
You will need to keep the source tree of <a href="http://libcxxabi.llvm.org">libc++abi</a>
available on your build machine and your copy of the libc++abi shared library must
be placed where your linker will find it.
</p>
<p>
We can now run CMake:
<ul>
<li><code>CC=clang CXX=clang++ cmake -G "Unix Makefiles"
-DLIBCXX_CXX_ABI=libcxxabi
-DLIBCXX_LIBCXXABI_INCLUDE_PATHS="&lt;libc++abi-source-dir&gt;/include"
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX=/usr
&lt;libc++-source-dir&gt;</code></li>
<li><code>make</code></li>
<li><code>sudo make install</code></li>
</ul>
<p>
Unfortunately you can't simply run clang with "-stdlib=libc++" at this point, as
clang is set up to link for libc++ linked to libsupc++. To get around this
you'll have to set up your linker yourself (or patch clang). For example,
<ul>
<li><code>clang++ -stdlib=libc++ helloworld.cpp -nodefaultlibs -lc++ -lc++abi -lm -lc -lgcc_s -lgcc</code></li>
</ul>
Alternately, you could just add libc++abi to your libraries list, which in most
situations will give the same result:
<ul>
<li><code>clang++ -stdlib=libc++ helloworld.cpp -lc++abi</code></li>
</ul>
</p>
</p>
<!--=====================================================================-->
<h2>Build on Linux using CMake and libcxxrt.</h2>
<!--=====================================================================-->
<p>
You will need to keep the source tree of
<a href="https://github.com/pathscale/libcxxrt/">libcxxrt</a> available
on your build machine and your copy of the libcxxrt shared library must
be placed where your linker will find it.
</p>
<p>
We can now run CMake:
<ul>
<li><code>CC=clang CXX=clang++ cmake -G "Unix Makefiles"
-DLIBCXX_CXX_ABI=libcxxrt
-DLIBCXX_LIBCXXABI_INCLUDE_PATHS="&lt;libcxxrt-source-dir&gt;/src"
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX=/usr
&lt;libc++-source-dir&gt;</code></li>
<li><code>make</code></li>
<li><code>sudo make install</code></li>
</ul>
<p>
Unfortunately you can't simply run clang with "-stdlib=libc++" at this point, as
clang is set up to link for libc++ linked to libsupc++. To get around this
you'll have to set up your linker yourself (or patch clang). For example,
<ul>
<li><code>clang++ -stdlib=libc++ helloworld.cpp -nodefaultlibs -lc++ -lcxxrt -lm -lc -lgcc_s -lgcc</code></li>
</ul>
Alternately, you could just add libcxxrt to your libraries list, which in most
situations will give the same result:
<ul>
<li><code>clang++ -stdlib=libc++ helloworld.cpp -lcxxrt</code></li>
</ul>
</p>
</p>
<!--=====================================================================-->
<h2>Design Documents</h2>
<!--=====================================================================-->