编译一个 Clang

编译一个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 update

下载依赖

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
updatedupdated2025-09-302025-09-30