使用 mold 加速 clang 构建

mold 是一个多线程的链接器,比 gold/ld/lld 快不只一个数量级

1. 构建高版本的 GCC

不过低版本的 gcc(8.3肯定不行) 不支持,想要使用,需要编一个高版本的。我这用的是 gcc 12.2,构建脚本:

#!/bin/bash
set -ex
./contrib/download_prerequisites

./configure --prefix=`pwd`/install --disable-bootstrap --disable-multilib
make -j`nproc`
make install

2. 构建 mold

当然,项目的 readme.md 在 这里 已经描述了怎么构建,还是贴一下我的构建过程:

#!/bin/bash
set -ex

[ ! -d build ] && cd mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release .. \
      -DCMAKE_C_COMPILER=/workspace/tools/04.gcc12/install/bin/gcc \
      -DCMAKE_CXX_COMPILER=/workspace/tools/04.gcc12/install/bin/g++ \
      -DCMAKE_INSTALL_PREFIX=/workspace/tools/03.mold/install
cmake --build . -j $(nproc)
cmake --install .

3. 构建 clang

构建过程:

#!/bin/bash

[ ! -d build ] && mkdir build
cd build

export LD_LIBRARY_PATH=/workspace/tools/04.gcc12/install/lib:/workspace/tools/04.gcc12/install/lib64:$LD_LIBRARY_PATH

cmake -G Ninja \
        ../llvm -DLLVM_TARGETS_TO_BUILD="X86" \
        -DLVM_USE_LINKER=mold \
        -DCMAKE_BUILD_TYPE=Debug \
        -DLLVM_ENABLE_ASSERTIONS=ON \
        -DCMAKE_C_COMPILER=/workspace/tools/04.gcc12/install/bin/gcc \
        -DCMAKE_CXX_COMPILER=/workspace/tools/04.gcc12/install/bin/g++ \
        -DCMAKE_C_FLAGS="-O3 -fuse-ld=mold" \
        -DCMAKE_CXX_FLAGS="-O3 -fuse-ld=mold" \
        -DCMAKE_SHARED_LINKER_FLAGS="-fuse-ld=mold" \
        -DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=mold" \
        -DLLVM_ENABLE_PROJECTS="bolt"
time ninja -j`nproc` -v

3.1 效果

ld:

real    46m16.016s
user    448m49.011s
sys     62m51.865s

mold:

real    22m47.918s
user    615m0.892s
sys     37m1.994s

真 TM newbility !!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值