安装 LLVM 和 Clang

LLVM 是伊利诺伊大学的一个开源项目,LLVM 提供了完整的 C/C++工具链,Clang 属于其中的一个子项目,是 LLVM 原生的 ” C/C++/Objective-C” 编译器前端,Clang 负责完成词法分析语法分析,并将分析结果转换为 Abstract Syntax Tree ( 抽象语法树 ) ,最后使用 LLVM 作为后端代码的生成器。

Clang 的开发目标是提供一个可以替代 GCC 的前端编译器。与 GCC 相比,Clang 是一个重新设计的编译器前端,具有一系列优点,例如模块化,代码简单易懂,占用内存小以及容易扩展和重用等。由于 Clang 在设计上的优异性,使得 Clang 非常适合用于设计源代码级别的分析和转化工具。Clang 也已经被应用到一些重要的开发领域,如 Static Analysis 是一个基于 Clang 的静态代码分析工具。还有 vim 中的插件 YouCompleteMe 就是利用 Clang 完成语法分析并给出精确的自动补全和语法错误提示(即静态分析)。

安装 LLVM 和 Clang_第1张图片
Clang 简略架构图

准备工作

首先安装必要的软件,官方是使用 svn 进行版本控制的,我们可以通过 svn 获取其源码。安装过程中要用到 cmake 命令,所以我们需要安装 subversion 和 cmake 两个软件。LLVM 也支持 Git 了,但是好像不是所有的子项目都支持,所以这里没做研究。

sudo apt install subversion
sudo apt install cmake

下载 LLVM 核心代码

Checkout LLVM from Subversion
首先我们建立一个文件夹 llvm-source 用来存放源代码。由于同学使用的是 RELEASE_500 这一版本,所以这里我也下载这一版本 LLVM 核心代码仓库。

mkdir llvm-source-build
cd llvm-source-build
svn co http://llvm.org/svn/llvm-project/llvm/tags/RELEASE_500/final llvm

下载 Clang 源码

llvm-project,切到 llvm 核心代码的 tools 目录下,下载 Clang 的源码。下载完成后,返回到 llvm 目录下。

cd llvm/tools
svn co http://llvm.org/svn/llvm-project/cfe/tags/RELEASE_500/final clang
cd ..

下载 Clang 工具源码

切换到 clang 目录下,下载 clang 工具源码。这一步是可选的。下载完成后返回到 llvm 目录下。

cd tools/clang/tools
svn co http://llvm.org/svn/llvm-project/clang-tools-extra/tags/RELEASE_500/final extra
cd ../../..

下载Compiler-RT 源码

cd projects
svn co http://llvm.org/svn/llvm-project/compiler-rt/tags/RELEASE_500/final compiler-rt
cd ..

下载标准库libcxx 和 libcxxabi

cd projects
svn co http://llvm.org/svn/llvm-project/libcxx/tags/RELEASE_500/final libcxx
svn co http://llvm.org/svn/llvm-project/libcxxabi/tags/RELEASE_500/final libcxxabi
cd ..

编译安装

首先返回到 llvm-source-build 目录下,新建 bulid 目录。切换到 build 目录下。使用 cmake 得到 Makefile文件,之后使用 make 编译,由于我是安装在 12 核心的服务器上,稍微查了一下文档,LLVM 支持并行编译。所以我使用了 -j 参数指定了 12 个核心进行并行编译。接着使用 make install 安装即可。
-G "Unix Makefiles" 表示要使用 cmake 工具得到 Unix 环境的 Makefile。其他参数不一一介绍了,当然也安装过程也支持更多的参数,具体的参数可以参考## Options and variables。

cd ..
mkdir bulid
cd build
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD="X86" ../llvm
make -j 12
sudo make install

libc ++

官方网站
libc++ 是一个 C++ 标准库,包含了对 C++11 的完整支持,libc++ 相对于 libstdc++ 是另一个 C++ 标准的实现,在平常的学习生活中,常用的两个库就是 libc++ 和 libstdc++。

补充说明

关于 Clang、libc++、libc++ ABI、compiler-rt 的相关介绍可以去官网找到,简介在官网首页就有。

参考教程

Ubuntu16.04 安装 llvm 和 clang
安装 LLVM + Clang

你可能感兴趣的:(安装 LLVM 和 Clang)