搭建 llvm 学习环境

Posted 胡刚2016

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搭建 llvm 学习环境相关的知识,希望对你有一定的参考价值。

1. 下载llvm

 git clone https://github.com/llvm/llvm-project.git

因为国内网络的原因,clone的时候没有反应,可以多此 Ctrl + C 重新 clone

2. 下载安装cmake

注意:下载的cmake版本必须是 3.13.4 及以上的,否则你后面编译 llvm 会报下面的错误

CMake Error at CMakeLists.txt:3 (cmake_minimum_required):
CMake 3.13.4 or higher is required.  You are running version 3.10.2

如果你之前安装的cmake 版本低于 3.13.4,你需要卸载cmake,并且去 /usr/share 目录下,删掉 cmake 和 cmake+版本号 这些文件

#删除cmake
sudo apt -y remove cmake
#进入/usr/share目录
cd  /usr/share
#先敲cmake,然后连续敲两下Tab键,查看所有cmake开头的文件
cmake
#删掉 cmake 和 cmake+版本号 这些文件,这里我没有cmake+版本号的文件,你有的话要自己删掉
sudo rm -rf cmake

注意:不要使用 sudo apt install cmake 下载,这样下载的版本会很旧,一定要去官网下载

cmake官网链接

#解压
tar xf cmake-3.24.0-rc2-linux-x86_64.tar.gz
#将 cmake-3.24.0-rc2-linux-x86_64 剪切到 /usr/share 目录,并且命名为 cmake-3.24.0-rc2-linux-x86_64
sudo mv cmake-3.24.0-rc2-linux-x86_64  /usr/share/cmake-3.24.0-rc2-linux-x86_64
#将 /usr/share/cmake-3.24.0-rc2-linux-x86_64/bin/cmake 软连接到 /usr/bin/ ,并且给软连接命名为 cmake,这样就能执行cmake了
sudo ln -sf /usr/share/cmake-3.24.0-rc2-linux-x86_64/bin/cmake    /usr/bin/cmake
cmake --version

3. 下载安装python

因为Ninja编译依赖于python,所以先安装python(先下载ninja也可以)

sudo apt install python


验证安装成功

4. 安装gcc g++

否则编译 ninja 会报错找不到 c++

sudo apt-get install gcc
sudo apt-get install g++

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install gcc-11
sudo apt install g++-11

#查看是否安装成功
ls /usr/bin/gcc* 
ls /usr/bin/g++* 

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 50
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 50

gcc --vesion
g++ --version

5. 下载ninja

cd ~
mkdir ninja
cd ninja/
git clone https://github.com/ninja-build/ninja.git

6. 编译ninja

cd ninja
./configure.py --bootstrap

7. 安装 ninja

将编译好的Ninja 拷贝到 /usr/bin

sudo cp ./ninja  /usr/bin


验证安装成功

ninja --version

8. 编译 llvm

cd ~/llvm
cd llvm-project/
mkdir build
cd build/
cmake -G Ninja ../llvm -DLLVM_ENABLE_PROJECTS='mlir;clang;lldb;lld' -DLLVM_BUILD_EXAMPLES=ON  -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON


最后的编译命令中的 …/llvm 指的是 build 目录上一级目录中的 llvm 目录

ninja -j16

一般会报错:虚拟内存不够(注意这里指的是内存条不够,不是磁盘不够!)

virtual memory exhausted: Cannot allocate memory

9. 解决报错

关闭这个虚拟机

设置内存大小为16GB

10. 重新编译

将原来的 build 目录删掉

cd ~/llvm/llvm-project
rm -rf build

重建 build 目录,重新编译

cd ~/llvm/llvm-project
mkdir build
cd build
cmake -G Ninja ../llvm -DLLVM_ENABLE_PROJECTS=mlir -DLLVM_BUILD_EXAMPLES=ON  -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON
ninja -j8

11. 下载安装 vscode







创建文件夹

cd ~
mkdir llvm_test

安装 c/c++插件

打开 创建好的 llvm_test文件夹

https://godbolt.org/


以上是关于搭建 llvm 学习环境的主要内容,如果未能解决你的问题,请参考以下文章

WASM发展状况更新,以及LLVM-wasm编译环境搭建过程

解决XCODE配置LLVM环境出现的问题

LLVM学习笔记(52)

LLVM学习笔记(52)

LLVM学习笔记(43-2)

LLVM学习笔记(54)