LLVM学习入门
入门学习LLVM开始,回顾一下之前的知识。
首先,LLVM由三个部分组成,
- 第一部分是LLVM组件,它包括工具集,库文件以及LLVM需要用到的头文件。它包括汇编程序,反汇编程序,bitcode分析器和二进制代码优化器。它也包括基本的对于Clang前端和LLVM工具的测试。
- 第二部分是Clang前端,它可以把C、C++、Objective C,以及Objective C++编译为bitcode,一旦编译成为LLVM的bitcode,LLVM组件即可使用相关的工具对其进行控制操作。
- 第三部分是可选部分,称作测试组件。用来测试LLVM的功能和性能。
快速开始
如果是类UNIX系统,确保有安装GCC和Clang。Windows系统请安装Visual Studio。
以下均在类UNIX系统下,Windows请自行查阅文档:
GNU Make 3.79,3.79.1
GCC >= 4.8.0
Python >= 2.7
zlib >= 1.2.3.4
- 使用SVN将LLVM checkout下来
-
cd llvm
注意不要是根目录 svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
-
- 使用SVN将Clang checkout下来
cd llvm
cd llvm/tools
svn co http://llvm.org/svn/llvm-project/cfe/trunk clang
- 使用SVN将额外的Clang 工具checkout下来(可选)
cd llvm
cd llvm/tools/clang/tools
svn co http://llvm.org/svn/llvm-project/clang-tools-extra/trunk extra
- 使用SVN将LLD linker checkout下来(可选)
cd llvm
cd llvm/tools
svn co http://llvm.org/svn/llvm-project/lld/trunk lld
- 使用SVN将Polly Loop Optimizer checkout下来(可选)
cd llvm
cd llvm/tools
svn co http://llvm.org/svn/llvm-project/polly/trunk polly
- 使用SVN将Compiler-RT checkout下来(可选)
cd llvm
cd llvm/projects
- 使用SVN将Libomp checkout下来(可选)
cd llvm
cd llvm/projects
svn co http://llvm.org/svn/llvm-project/openmp/trunk openmp
- 使用SVN将libcxx checkout下来(可选)
cd llvm
cd llvm/projects
svn co http://llvm.org/svn/llvm-project/libcxx/trunk libcxx
svn co http://llvm.org/svn/llvm-project/libcxxabi/trunk libcxxabi
- 获取测试源代码(可选)
cd llvm
cd llvm/projects
-
svn co http://llvm.org/svn/llvm-project/test-suite/trunk test-suite
接下来需要配置LLVM和Clang:
使用CMake来buildLLVM和Clang,要求的是CMake3.4.3以上。步骤如下:
cd dir_you_want_to_build
mkdir build
cd build
-
cmake -G <generator> [options] <path to llvm sources>
其中一些generators如下(即编译工具): Unix Makefiles
Ninja
Visual Studio
-
Xcode
其中可选项options如下: -
-DCMAKE_INSTALL_PREFIX=directory
明确LLVM工具和库被安装的位置,默认在/usr/local
下。 -
-DCMAKE_BUILD_TYPE=type
Debug选项,默认就是使用Debug。 -
-DLLVM_ENABLE_ASSERTIONS=On
编译时开启断言检查(assertion),默认就是开启
要注意整个llvm和build的绝对路径中不要出现中文,否则会出问题。
最后使用make命令编译一下即可,生成的文件位于build/bin
目录下。
因为步骤中需要用到cmake,最后附上cmake的下载链接