环境配置:Ubuntu-16.04 |
1) 下载依赖
sudo apt-get install cmake
sudo apt-get install xz-utils
sudo apt-get install build-essential
sudo apt-get install wget
2) 下载源码 && 解压
# 下载
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-8.0.1/llvm-8.0.1.src.tar.xz
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-8.0.1/cfe-8.0.1.src.tar.xz
# 解压缩
tar xvf llvm-8.0.1.src.tar.xz
mv llvm-8.0.1.src llvm
tar xvf cfe-8.0.1.src.tar.xz
mv cfe-8.0.1.src llvm/tools/clang
3) 编译 && 安装
这里在内存及硬盘充足的条件下,推荐 Debug
配置的编译,这更能让你体验"较大的项目"的编译过程。否则请采用Release
配置的编译
强烈推荐release
,因为debug
配置会占用90G空间,而release
只需要10G
mkdir llvm-build && cd llvm-build
# Release
cmake ../llvm -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=`cd .. && pwd`/llvm-install
# Debug
cmake ../llvm -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=`cd .. && pwd`/llvm-install
# Install
make install
4) 配置环境变量
sudo gedit ~/.profile(or .bashrc)
在打开的文件末尾加上下面的内容,保存修改并重启虚拟机。
export PATH="$HOME/llvm-8.0.1/llvm-install/bin:$PATH"
在终端输入llvm-config --version
,出现8.0.1
表示编译并安装成功。
5) 新建gcd.c
int gcd (int u, int v) { /* calculate the gcd of u and v */
if (v == 0) return u;
else return gcd(v, u - u / v * v); /* v,u-u/v*v is equals to u mod v*/
}
int main() {
int x; int y; int temp;
x = 72;
y = 18;
if (x<y) {
temp = x;
x = y;
y = temp;
}
return gcd(x,y);
}
6) 测试
$ clang -S -emit-llvm gcd.c
$ lli gcd.ll
$ echo $?
输出结果应为18