搭建 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 下载,这样下载的版本会很旧,一定要去官网下载
#解压
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 学习环境的主要内容,如果未能解决你的问题,请参考以下文章