llvm+clang編譯安裝
最近一段時間在llvm+clang上做一些東西,所以順便將自己如何編譯安裝llvm+clang寫了篇文章發在這裡,希望能幫助剛接觸llvm+clang的童鞋少走一些彎路(我剛接觸的時候為了編譯安裝這個費了好大的力氣,全是眼淚這裡不多說了)。首先介紹一下,我用的ubuntu麒麟16.10的作業系統(不是虛擬機器,我在虛擬機器上編譯安裝了很多次都以失敗告終)。具體過程如下:
1. 下載碼源
首先先安裝svn,用來check out llvm的碼源
aptitude install subversion
然後checkout llvm的碼源:
1.2 Check out LLVM
checkout的是llvm專案的主要程式碼
cd where-you-want-llvm-to-live
svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
1.3 Check out Clang
clang是llvm專案的 C, C++, Objective C and Objective C++ 前端
cd llvm/tools
svn co http://llvm.org/svn/llvm-project/cfe/trunk clang
cd ../..
1.4 Check out extra Clang tools: (可選的)
Extra中包含的是利用
cd llvm/tools/clang/tools
svn co http://llvm.org/svn/llvm-project/clang-tools-extra/trunk extra
cd ../../../..
1.5 Check out Compiler-RT
Compiler-RT主要是為Clang和LLVM提供執行時庫的支援
cd llvm/projects
svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt
cd ../..
1.6 Check out Test Suite Source Code(可選的)
cd where-you-want-llvm-to-live
cd llvm/projects
svn co http://llvm.org/svn/llvm-project/test-suite/trunk test-suit
2. 編譯安裝
llvm支援cmake和autotools進行編譯。不同編譯方式對後續建立自定義的pass的方式就不同,例如如果使用cmake編譯,寫pass的時候就不需要建立makefile檔案,而需要建立CMakeList.txt檔案。
在編譯之前,需要參看對系統的要求:
http://llvm.org/docs/GettingStarted.html#requirements
2.1 安裝cmake
直接使用指令安裝的cmake的版本過低,因此需要自己安裝cmake。
從http://www.cmake.org/download/下載cmake的碼源,解壓在安裝。(我自己安裝的是cmake3.6)
./bootstrap
make
make install
2.2 編譯安裝
llvm為了防止編譯的中間結果分佈在碼源目錄中,影響碼源的結構。因此不支援目錄內編譯。需要在碼源目錄外建立額外的編譯目錄。
mkdir build
cd build
cmake -G "Unix Makefiles" ../llvm
make
make install
在make的時候可以選擇make -jn指令來進行並行編譯,加快編譯的速度。n表示你所擁有的處理器數。
另外,需要強調的是,llvm+clang 3.6以前的版本可是使用./configure來進行編譯,3.6以後的版本,只能使用cmake進行編譯。
---恢復內容結束---
---恢復內容結束---