编译一个Clang
选择一个linux发行版
Debian
换源
1
| vim /etc/apt/sources.list
|
写入如下内容
# 默认注释了源码仓库,如有需要可自行取消注释
deb http://mirrors.ustc.edu.cn/debian bookworm main contrib non-free non-free-firmware
deb-src http://mirrors.ustc.edu.cn/debian bookworm main contrib non-free non-free-firmware
deb http://mirrors.ustc.edu.cn/debian bookworm-updates main contrib non-free non-free-firmware
deb-src http://mirrors.ustc.edu.cn/debian bookworm-updates main contrib non-free non-free-firmware
# backports 软件源,请按需启用
deb http://mirrors.ustc.edu.cn/debian bookworm-backports main contrib non-free non-free-firmware
deb-src http://mirrors.ustc.edu.cn/debian bookworm-backports main contrib non-free non-free-firmware
更新源
下载依赖
1
| apt install -y clang cmake libgmp-dev libmpfr-dev libmpc-dev make
|
下载源码
1
2
| git clone https://github.com/llvm/llvm-project.git
cd llvm-project
|
编译LLVM
1
2
3
4
5
| mkdir llvm-build
cd llvm-build
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE="Release" ../llvm
make -j 4
make install
|
编译Clang
1
2
3
4
5
| mkdir clang-build
cd clang-build
cmake -G "Unix Makefiles" -DLLVM_INCLUDE_TESTS=OFF -DCMAKE_BUILD_TYPE="Release" ../clang
make -j 4
make install
|
解决方案
完整脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
cat << EOF > /etc/apt/sources.list
# 默认注释了源码仓库,如有需要可自行取消注释
deb http://mirrors.ustc.edu.cn/debian bookworm main contrib non-free non-free-firmware
deb-src http://mirrors.ustc.edu.cn/debian bookworm main contrib non-free non-free-firmware
deb http://mirrors.ustc.edu.cn/debian bookworm-updates main contrib non-free non-free-firmware
deb-src http://mirrors.ustc.edu.cn/debian bookworm-updates main contrib non-free non-free-firmware
# backports 软件源,请按需启用
deb http://mirrors.ustc.edu.cn/debian bookworm-backports main contrib non-free non-free-firmware
deb-src http://mirrors.ustc.edu.cn/debian bookworm-backports main contrib non-free non-free-firmware
EOF
apt update
# 需要一个老版本的C++编译器, g++或者clang++都可以
apt install -y clang cmake libgmp-dev libmpfr-dev libmpc-dev make
# 下载源码
git clone https://github.com/llvm/llvm-project.git
cd llvm-project
base_dir=$(pwd)
# clang依赖llvm, 需要先构建llvm
mkdir ${base_dir}/llvm-build
cd ${base_dir}/llvm-build
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE="Release" ${base_dir}/llvm
# 等待一小时
make -j 4
make install
# 构建clang
mkdir ${base_dir}/clang-build
cd ${base_dir}/clang-build
# 必须要在前面先安装llvm
cmake -G "Unix Makefiles" -DLLVM_INCLUDE_TESTS=OFF -DCMAKE_BUILD_TYPE="Release" ${base_dir}/clang
# 等待两小时
make -j 4
make install
|