docs: Strongly recommend setting rpath when using a local GCC toolchain

Users keep emailing us about the difficulties of getting LD_LIBRARY_PATH
into their environment, which should be completely unecessary. Try to
strengthen the rpath recommentation by putting in an example cmake
invocation.

Speaking of which, we might want to make CMake the recommended build
system in GettingStarted.html.

llvm-svn: 214565
This commit is contained in:
Reid Kleckner 2014-08-01 21:40:53 +00:00
parent 4b8de11c81
commit 2a069a8291
1 changed files with 17 additions and 4 deletions

View File

@ -331,10 +331,23 @@ of this information from.
.. _GCC wiki entry:
http://gcc.gnu.org/wiki/InstallingGCC
Once you have a GCC toolchain, use it as your host compiler. Things should
generally "just work". You may need to pass a special linker flag,
``-Wl,-rpath,$HOME/toolchains/lib`` or some variant thereof to get things to
find the libstdc++ DSO in this toolchain.
Once you have a GCC toolchain, configure your build of LLVM to use the new
toolchain for your host compiler and C++ standard library. Because the new
version of libstdc++ is not on the system library search path, you need to pass
extra linker flags so that it can be found at link time (``-L``) and at runtime
(``-rpath``). If you are using CMake, this invocation should produce working
binaries:
.. code-block:: console
% mkdir build
% cd build
% CC=$HOME/toolchains/bin/gcc CXX=$HOME/toolchains/bin/g++ \
cmake .. -DCMAKE_CXX_LINK_FLAGS="-Wl,-rpath,$HOME/toolchains/lib64 -L$HOME/toolchains/lib64"
If you fail to set rpath, most LLVM binaries will fail on startup with a message
from the loader similar to ``libstdc++.so.6: version `GLIBCXX_3.4.20' not
found``. This means you need to tweak the -rpath linker flag.
When you build Clang, you will need to give *it* access to modern C++11
standard library in order to use it as your new host in part of a bootstrap.