Ubuntu 16.04: Build LLVM/Clang from svn repository


Table of Contents

1 Install package for building LLVM/Clang

Install package for building LLVM/Clang with apt. LLVM/Clang does not support configure now. You need to use cmake.

$ sudo apt-get build-dep -y llvm clang$ sudo apt-get install -y subversion cmake

2 Download source code from svn repository

Acording to Clang page, download source code except libcxx.

$ svn co llvm$ cd llvm/tools$ svn co clang$ cd clang/tools$ svn co extra$ cd ../../../projects$ svn co compiler-rt$ cd ../..

3 Build LLVM/Clang

Create build directory, build LLVM/Clang as a release binary and install binary to /usr/local.

$ mkdir llvm.build$ cd llvm.build$ cmake -G “Unix Makefiles” -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local ../llvm$ make$ sudo make install

4 Excecution result

Compile c source code.

$ /usr/local/bin/clang –versionclang version 3.9.0 (trunk 268858)Target: x86_64-unknown-linux-gnuThread model: posixInstalledDir: /usr/local/bin$ echo ‘#include <stdio.h>int main(void) { printf(“hellon”); return 0; }’ > hello.c$ /usr/local/bin/clang -v hello.c -o helloclang version 3.9.0 (trunk 268858)Target: x86_64-unknown-linux-gnuThread model: posixInstalledDir: /usr/local/binFound candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5.3.1Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6.0.0Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5.3.1Candidate multilib: .;@m64Selected multilib: .;@m64 “/usr/local/bin/clang-3.9” -cc1 -triple x86_64-unknown-linux-gnu-emit-obj -mrelax-all -disable-free -disable-llvm-verifier-discard-value-names -main-file-name hello.c -mrelocation-model static-mthread-model posix -mdisable-fp-elim -fmath-errno -masm-verbose-mconstructor-aliases -munwind-tables -fuse-init-array -target-cpux86-64 -v -dwarf-column-info -debugger-tuning=gdb -resource-dir/usr/local/bin/../lib/clang/3.9.0 -internal-isystem /usr/local/include-internal-isystem /usr/local/bin/../lib/clang/3.9.0/include-internal-externc-isystem /usr/include/x86_64-linux-gnu-internal-externc-isystem /include -internal-externc-isystem/usr/include -fdebug-compilation-dir /home/hiroom2 -ferror-limit 19-fmessage-length 90 -fobjc-runtime=gcc -fdiagnostics-show-option-fcolor-diagnostics -o /tmp/hello-d0d56a.o -x c hello.cclang -cc1 version 3.9.0 based upon LLVM 3.9.0svn default targetx86_64-unknown-linux-gnuignoring nonexistent directory “/include”#include “…” search starts here:#include <…> search starts here: /usr/local/include /usr/local/bin/../lib/clang/3.9.0/include /usr/include/x86_64-linux-gnu /usr/includeEnd of search list. “/usr/bin/ld” -z relro –hash-style=gnu –build-id –eh-frame-hdr -melf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o hello/usr/lib/gcc/x86_64-linux-gnu/5.3.1/../../../x86_64-linux-gnu/crt1.o/usr/lib/gcc/x86_64-linux-gnu/5.3.1/../../../x86_64-linux-gnu/crti.o/usr/lib/gcc/x86_64-linux-gnu/5.3.1/crtbegin.o-L/usr/lib/gcc/x86_64-linux-gnu/5.3.1-L/usr/lib/gcc/x86_64-linux-gnu/5.3.1/../../../x86_64-linux-gnu-L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu-L/usr/lib/gcc/x86_64-linux-gnu/5.3.1/../../.. -L/usr/local/bin/../lib-L/lib -L/usr/lib /tmp/hello-d0d56a.o -lgcc –as-needed -lgcc_s–no-as-needed -lc -lgcc –as-needed -lgcc_s –no-as-needed/usr/lib/gcc/x86_64-linux-gnu/5.3.1/crtend.o /usr/lib/gcc/x86_64-linux-gnu/5.3.1/../../../x86_64-linux-gnu/crtn.o$ ./hellohello

Android | Linux | SDL - Narrow Escape