最新版本llvm-clang安装学习建议

LLVM的最新版本已经更新到了13.0.0版本,而我在之前的博客中给出的还是4.0版本的安装教程(https://www.cnblogs.com/jourluohua/p/9554995.html),两边的代码结构没有大的变化,但是API和调用接口等已经变化非常迅速。现在就最新的llvm源码安装进行说明。

大概分为以下的几个步骤:

  • 1. 依赖库的安装
  • 2. 相关文件下载
  • 3. 编译&安装
  • 4. 测试安装是否完成
  1. 依赖库的安装。(老生常谈,现实是,我也不知道需要什么安装依赖库,用的系统是Linux version 4.9.0-39-custom (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.2) )),只有cmake遇到了版本过低的问题,我们这里不使用sudo权限,仅安装在自己目录下进行使用。
wget https://cmake.org/files/v3.18/cmake-3.18.2.tar.gz
tar -xzvf cmake-3.18.2.tar.gz
cd cmake-3.18.2
./bootstrap --prefix=/$dir_you_want_install
make
make install

并且在.bashrc进行对应的修改

export PATH=/mnt/ssd/wenze.lwz/local/bin:$PATH

 2. 下载相关的文件

一般来说,有git方式,或者源码下载方式两种,我这里采用的是源码下载方式

https://github.com/llvm/llvm-project/archive/main.zip
unzip llvm-project-main.zip

3. 添加编译脚本

为了节省输入的工作量,这里直接将相关的编译命令写成了build.sh,内容如下:

 1 #! /bin/bash
 2 BASEDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
 3 ENABLE_LLVM_TARGETS="X86;NVPTX"
 4 
 5 if [ ! -z "$1" ]
 6 then
 7     if [ $1 == clean ]
 8     then
 9         echo remove build folder...
10         rm -rf build
11         exit 0
12     else
13         if [ $1 == rebuild ]
14         then
15             rm -rf build
16         elif [ $1 == quicktest ]
17         then
18             ENABLE_LLVM_TARGETS="X86;NVPTX"
19         fi
20     fi
21 fi
22 if [ -d $BASEDIR/build ]
23 then
24     rm -rf build && mkdir build && cd build
25     cmake ../llvm -DLLVM_ENABLE_PROJECTS="clang" -DLLVM_TARGETS_TO_BUILD=${ENABLE_LLVM_TARGETS} 
26      -DLLVM_BUILD_TOOLS=true -DLLVM_INCLUDE_UTILS=true -DCMAKE_BUILD_TYPE=Release 
27     -DLLVM_ENABLE_RTTI=true  -DLLVM_TOOL_LLVM_OPT_FUZZER_BUILD=On  
28     
29     && make -j32
30     if [ $? -ne 0 ];then
31         echo "FAIL!"
32         exit 1
33     else
34         echo "SUCCESS!"
35     fi
36 fi
View Code

配置bashrc

export LLVM_HOME=$where_your_llvm_dir/llvm-project-main/build/bin
export PATH=$LLVM_HOME:$PATH

4. 测试

使用clang –version 如果能得到正确结果,并且llvm-dis能得到正确结果,代表此处安装正确

为了增加对Clang的AST的熟悉程度,想作为一个AST实现的源源变化的系列教程:

  1. Clang AST介绍 https://www.cnblogs.com/jourluohua/p/14524955.html
  2. Clang教程之实现源源变化 https://www.cnblogs.com/jourluohua/p/14514274.html
  3. Clang教程之实现源源变化(2) https://www.cnblogs.com/jourluohua/p/14517145.html
  4. Clang教程之实现源源变化(3) https://www.cnblogs.com/jourluohua/p/14520336.html
  5. Clang教程之实现源源变化(4)  https://www.cnblogs.com/jourluohua/p/14525428.html
原文地址:https://www.cnblogs.com/jourluohua/p/14509209.html