LLVM學(xué)習(xí)入門
入門學(xué)習(xí)LLVM開始,回顧一下之前的知識(shí)。
首先,LLVM由三個(gè)部分組成,
- 第一部分是LLVM組件,它包括工具集,庫(kù)文件以及LLVM需要用到的頭文件。它包括匯編程序,反匯編程序,bitcode分析器和二進(jìn)制代碼優(yōu)化器。它也包括基本的對(duì)于Clang前端和LLVM工具的測(cè)試。
- 第二部分是Clang前端,它可以把C、C++、Objective C,以及Objective C++編譯為bitcode,一旦編譯成為L(zhǎng)LVM的bitcode,LLVM組件即可使用相關(guān)的工具對(duì)其進(jìn)行控制操作。
- 第三部分是可選部分,稱作測(cè)試組件。用來(lái)測(cè)試LLVM的功能和性能。
快速開始
如果是類UNIX系統(tǒng),確保有安裝GCC和Clang。Windows系統(tǒng)請(qǐng)安裝Visual Studio。
以下均在類UNIX系統(tǒng)下,Windows請(qǐng)自行查閱文檔:
GNU Make 3.79,3.79.1
GCC >= 4.8.0
Python >= 2.7
zlib >= 1.2.3.4
- 使用SVN將LLVM checkout下來(lái)
-
cd llvm注意不要是根目錄 svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
-
- 使用SVN將Clang checkout下來(lái)
cd llvmcd llvm/toolssvn co http://llvm.org/svn/llvm-project/cfe/trunk clang
- 使用SVN將額外的Clang 工具checkout下來(lái)(可選)
cd llvmcd llvm/tools/clang/toolssvn co http://llvm.org/svn/llvm-project/clang-tools-extra/trunk extra
- 使用SVN將LLD linker checkout下來(lái)(可選)
cd llvmcd llvm/toolssvn co http://llvm.org/svn/llvm-project/lld/trunk lld
- 使用SVN將Polly Loop Optimizer checkout下來(lái)(可選)
cd llvmcd llvm/toolssvn co http://llvm.org/svn/llvm-project/polly/trunk polly
- 使用SVN將Compiler-RT checkout下來(lái)(可選)
cd llvmcd llvm/projects
- 使用SVN將Libomp checkout下來(lái)(可選)
cd llvmcd llvm/projectssvn co http://llvm.org/svn/llvm-project/openmp/trunk openmp
- 使用SVN將libcxx checkout下來(lái)(可選)
cd llvmcd llvm/projectssvn co http://llvm.org/svn/llvm-project/libcxx/trunk libcxxsvn co http://llvm.org/svn/llvm-project/libcxxabi/trunk libcxxabi
- 獲取測(cè)試源代碼(可選)
cd llvmcd llvm/projects-
svn co http://llvm.org/svn/llvm-project/test-suite/trunk test-suite
接下來(lái)需要配置LLVM和Clang:
使用CMake來(lái)buildLLVM和Clang,要求的是CMake3.4.3以上。步驟如下:
cd dir_you_want_to_buildmkdir buildcd build-
cmake -G <generator> [options] <path to llvm sources>
其中一些generators如下(即編譯工具): Unix MakefilesNinjaVisual Studio-
Xcode
其中可選項(xiàng)options如下: -
-DCMAKE_INSTALL_PREFIX=directory明確LLVM工具和庫(kù)被安裝的位置,默認(rèn)在/usr/local下。 -
-DCMAKE_BUILD_TYPE=typeDebug選項(xiàng),默認(rèn)就是使用Debug。 -
-DLLVM_ENABLE_ASSERTIONS=On編譯時(shí)開啟斷言檢查(assertion),默認(rèn)就是開啟
要注意整個(gè)llvm和build的絕對(duì)路徑中不要出現(xiàn)中文,否則會(huì)出問(wèn)題。
最后使用make命令編譯一下即可,生成的文件位于build/bin目錄下。
因?yàn)椴襟E中需要用到cmake,最后附上cmake的下載鏈接