前言
整理一下关于llvm的安装步骤。首先保证有一些基本的安装包如 build-essential,所处环境为 Ubuntu 20.04.4 LTS。
一、采用包管理器安装
在root模式下执行:
apt install llvm
apt install clang
二、采用官网的二进制包
在Github:https://github.com/llvm/llvm-project/releases 上下载版本LLVM14.0.0,其中选择 clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz,然后放在 /usr/local 目录下,然后解压即可。
tar xvf clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz
mv clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04 llvm
export PATH="$PATH:/usr/local/llvm/bin"
三、编译安装llvm
前置工作:
apt install build-essential
apt install zip
apt install cmake
apt install python3
然后下载 Github 中的 llvm 项目(https://github.com/llvm/llvm-project),下载 zip 格式到 /usr/local 目录下:
root@e7f35d7d1648:/usr/local# ls
llvm-project-main.zip ...
root@e7f35d7d1648:/usr/local# unzip llvm-project-main.zip
root@e7f35d7d1648:/usr/local# ls
llvm-project-main.zip llvm-project-main ...
root@e7f35d7d1648:/usr/local# mkdir llvm
root@e7f35d7d1648:/usr/local# cd llvm-project-main
root@e7f35d7d1648:/usr/local/llvm-project-main# mkdir build
root@e7f35d7d1648:/usr/local/llvm-project-main# cd build
root@e7f35d7d1648:/usr/local/llvm-project-main/build# cmake -DLLVM_ENABLE_PROJECTS="clang;lldb" -DCMAKE_BUILD_TYPE="Debu
g" -DCMAKE_INSTALL_PREFIX="/usr/local/llvm" ../llvm
root@e7f35d7d1648:/usr/local/llvm-project-main/build# make
在Debug模式出现错误:
....
[ 68%] Building CXX object tools/clang/tools/driver/CMakeFiles/clang.dir/cc1as_main.cpp.o
[ 68%] Building CXX object tools/clang/tools/driver/CMakeFiles/clang.dir/cc1gen_reproducer_main.cpp.o
[ 68%] Linking CXX executable ../../../../bin/clang
collect2: fatal error: ld terminated with signal 9 [Killed]
compilation terminated.
make[2]: *** [tools/clang/tools/driver/CMakeFiles/clang.dir/build.make:333: bin/clang-15] Error 1
make[2]: *** Deleting file 'bin/clang-15'
make[1]: *** [CMakeFiles/Makefile2:48665: tools/clang/tools/driver/CMakeFiles/clang.dir/all] Error 2
make: *** [Makefile:152: all] Error 2
多次尝试修改无果,好像是因为 swap 分区的问题,但是在Docker容器中不好修改,还有说是不要采用 make jN,但是自己也没有采用这种做法。所以采用Realse模式试试,需要先删除之前make产生的文件,命令如下:
root@e7f35d7d1648:/usr/local/llvm-project-main/build# rm -rf *
root@e7f35d7d1648:/usr/local/llvm-project-main/build# cmake -DLLVM_ENABLE_PROJECTS="clang;lldb" -DCMAKE_BUILD_TYPE="Release" -DCMAKE_INSTALL_PREFIX="/usr/local/llvm" ../llvm
root@e7f35d7d1648:/usr/local/llvm-project-main/build# make
...大概4个小时左右吧,在自己电脑上
root@e7f35d7d1648:/usr/local/llvm-project-main/build# make install
成功!可执行文件保存在 /usr/local/llvm 中,其中内容和直接下载的官方二进制包中内容一样。
设置环境变量:
root@e7f35d7d1648:/usr/local/llvm-project-main/build# vim /etc/profile
在后面加上 export PATH=/usr/local/llvm/bin:$PATH
root@e7f35d7d1648:/usr/local/llvm-project-main/build# source /etc/profile
source /etc/profile 命令自己需要在每次开机时都需要执行。
补充:其实最早自己有试着编译Github中的Release中的源代码(llvm-14.0.0.src.tar.xz、clang-14.0.0.src.tar.xz 和 clang-tools-extra-14.0.0.src.tar.xz),但是总会在 cmake 阶段出现错误,不清楚所造成的原因(可能是因为相应的目录没有设置正确吧,不太好改…)。错误如下:
CMake Error at CMakeLists.txt:1256 (add_subdirectory):
add_subdirectory given source "/usr/local/llvm/../third-party/benchmark"
which is not an existing directory.
总结
完。