Introduction to LLVM

The LLVM package contains a collection of modular and reusable compiler and toolchain technologies. The Low Level Virtual Machine (LLVM) Core libraries provide a modern source and target-independent optimizer, along with code generation support for many popular CPUs (as well as some less common ones!). These libraries are built around a well specified code representation known as the LLVM intermediate representation ("LLVM IR").

The optional Clang and Compiler RT packages provide a new C, C++, Objective C and Objective C++ front-ends and runtime libraries for the LLVM.

This package is known to build and work properly using an LFS 7.8-systemd platform.

Package Information

Optional Downloads


Compiler RT

LLVM Dependencies



CMake-3.4.0, Doxygen-1.8.10, Graphviz-2.38.0, libxml2-2.9.2, texlive-20150521 (or install-tl-unx), Valgrind-3.11.0, Zip-3.0, OCaml, and Sphinx

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/llvm

Installation of LLVM

If you have downloaded the optional packages, install them into the source tree by running the following commands:

tar -xf ../cfe-3.7.0.src.tar.xz -C tools &&
tar -xf ../compiler-rt-3.7.0.src.tar.xz -C projects &&

mv tools/cfe-3.7.0.src tools/clang &&
mv projects/compiler-rt-3.7.0.src projects/compiler-rt

Install LLVM by running the following commands:

sed -e "s:/docs/llvm:/share/doc/llvm-3.7.0:" \
    -i Makefile.config.in &&

CC=gcc CXX=g++                   \
./configure --prefix=/usr        \
            --sysconfdir=/etc    \
            --enable-libffi      \
            --enable-optimized   \
            --enable-shared      \
            --disable-assertions &&

If you have installed Sphinx and wish to generate manual pages, issue the following command:

make -C docs -f Makefile.sphinx man

To test the results, issue: make -k check-all. There is a number of unexpected failures that can safely be ignored.

Now, as the root user:

make install &&

for file in /usr/lib/lib{clang,LLVM,LTO}*.a
  test -f $file && chmod -v 644 $file
done &&
unset file

If you had Python-2.7.10 installed and you have built Clang, install the Clang Analyzer by running the following command as the root user:

install -v -dm755 /usr/lib/clang-analyzer &&

for prog in scan-build scan-view
  cp -rfv tools/clang/tools/$prog /usr/lib/clang-analyzer/
  ln -sfv ../lib/clang-analyzer/$prog/$prog /usr/bin/
done &&

ln -sfv /usr/bin/clang /usr/lib/clang-analyzer/scan-build/ &&
mv -v /usr/lib/clang-analyzer/scan-build/scan-build.1 /usr/share/man/man1/ &&
unset prog

If you have built manual pages, install them by running the following command as the root user:

install -v -m644 docs/_build/man/* /usr/share/man/man1/

Command Explanations

sed -e ... Makefile.config.in: This sed fixes the location of the installed documentation.

--enable-libffi: This switch enables LLVM to use libffi. Remove if you did not install libffi.

--enable-optimized: This switch enables compiler optimizations in order to speed up the code and reduce its size.

--enable-shared: This switch enables building of the LLVM shared library which contains all of the static libraries linked into a single library.

--disable-assertions: This switch disables some additional compile checks which are not neccessary on a production system.


Installed Programs: bugpoint, c-index-test, clang, clang++ (symlink), count, FileCheck, clang-check, clang-format, clang-tblgen, llc, lli, lli-child-target, llvm-ar, llvm-as, llvm-bcanalyzer, llvm-config, llvm-cov, llvm-cxxdump, llvm-diff, llvm-dis, llvm-dsymutil, llvm-dwarfdump, llvm-extract, llvm-link, llvm-mc, llvm-mcmarkup, llvm-nm, llvm-objdump, llvm-profdata, llvm-pdbdump, llvm-ranlib (symlink), llvm-readobj, llvm-rtdyld, llvm-size, llvm-stress, llvm-symbolizer, llvm-tblgen, macho-dump, not, obj2yaml, opt, scan-build (symlink), scan-view (symlink), verify-uselistorder, and yaml2obj
Installed Libraries: BugpointPasses.so, libclang.so, libLLVM-3.7.0.so, libLLVM-3.7.so, libLTO.so, LLVMHello.so and numerous static libraries in /usr/lib
Installed Directories: /usr/include/{clang,clang-c,llvm,llvm-c}, /usr/lib/{clang,clang-analyzer}, /usr/share/doc/llvm-3.7.0, and /usr/share/llvm

Short Descriptions


is the automatic test case reduction tool.


is the Clang C, C++, and Objective-C compiler.


is the LLVM static compiler.


is used to directly execute programs from LLVM bitcode.


is the LLVM archiver.


is the LLVM assembler.


is the LLVM bitcode analyzer.


Prints LLVM compilation options.


is used to emit coverage information.


is the LLVM structural 'diff'.


is the LLVM disassembler.


is a tool used to manipulate archived DWARF debug symbol files, compatible with the Darwin command dsymutil.


is used to extract a function from an LLVM module.


is the LLVM linker.


is used to list LLVM bitcode and object file's symbol table.


is used to generate index for LLVM archive.


is used to generate random .ll files.


is the LLVM Target Description To C++ Code Generator.


takes an object file,and produces a YAML representation of the file.


is the LLVM optimizer.


is a Perl script that invokes the Clang static analyzer.


takes a YAML representation of an object file and converts it to an binary file.


contains the LLVM API functions.

Last updated on 2015-10-03 14:54:13 -0500