LLVM编译时build目录易占满磁盘,须将build和install目录均指定至空间充裕的独立路径(如/data/llvm-build和$HOME/local/llvm-21),禁用调试信息并避免/tmp或源码同分区构建,已编译中断则清空build重来。

编译时build目录占满磁盘怎么办
LLVM源码编译过程本身不写系统盘,但build目录会迅速膨胀到10GB以上,尤其开启LLVM_ENABLE_PROJECTS="clang;lld;lldb"后,中间对象文件、PCH缓存、调试符号极易填满C盘或默认HOME分区。这不是安装失败,而是构建路径选错了位置。
- 不要在
~/llvm-project下直接建build——它会和源码挤在同一分区 - 显式指定build目录到空间充裕的路径,比如
D:\llvm-build(Windows)或/data/llvm-build(Linux/macOS) - 执行cmake时用绝对路径:
cmake -S ../llvm-project/llvm -B /data/llvm-build -DCMAKE_INSTALL_PREFIX=/data/llvm-install ... - 如果已开始编译且磁盘告警,中断
make或ninja,清空当前build目录再重来——别硬撑,中途OOM或disk full会导致链接器报ld terminated with signal 9
install前怎么把最终安装目录换到大分区
make install或ninja install默认往/usr/local或C:\Program Files\LLVM写,这两个位置通常空间紧张且权限受限。关键不是“换安装位置”,而是从cmake配置阶段就切断与系统路径的绑定。
- 必须用
-DCMAKE_INSTALL_PREFIX指定你有完全控制权的路径,例如$HOME/local/llvm-21或E:\llvm21 - 该路径需提前创建并确保可写:
mkdir -p $HOME/local/llvm-21;Windows下确认E:\有足够空间且无UAC拦截 - 不要省略
-B参数指向独立build目录——install阶段只是把build产物拷贝过去,build目录本身仍可删 - 验证:安装后检查
$HOME/local/llvm-21/bin/clang是否存在,且llvm-config --prefix返回的正是你指定的路径
Windows上LLVM预编译包怎么避开C盘
官方LLVM-21.1.1-win64.exe安装器默认推荐C:\Program Files\LLVM,但这个路径含空格+中文兼容性差+空间易满。它支持自定义路径,但界面里不明显。
- 运行安装器时不点“Next”跳过向导,改用命令行静默安装:
LLVM-21.1.1-win64.exe /DIR="D:\LLVM" -
/DIR参数必须是纯英文、无空格、无括号的绝对路径,例如D:\llvm21或E:\devtools\llvm - 勾选“Add LLVM to PATH”后,手动补全
INCLUDE环境变量——仅换路径不够,否则clang++仍报fatal error: 'stdio.h' file not found - 若已装在C盘,直接剪切整个目录到新位置(如
D:\LLVM),再更新系统PATH环境变量指向新bin路径即可,无需重装
Ubuntu虚拟机里磁盘不够编译LLVM怎么办
Ubuntu虚拟机默认分配40–60GB磁盘,而LLVM完整构建需要至少100GB可用空间(源码+build+install+swap)。仅靠清理包管理器缓存或apt autoremove治标不治本。
- 优先扩容虚拟磁盘:关机→VMware设置中扩展硬盘→进系统后用
lvextend和resize2fs拉伸LVM逻辑卷(Ubuntu Server默认用LVM) - 临时缓解:把
build和install都指向外部挂载点,例如/mnt/data/llvm-build,前提是该分区已挂载且有空间 - 禁用调试信息节省空间:
-DCMAKE_BUILD_TYPE=MinSizeRel比Release少生成约30%对象文件 - 避免在
/tmp编译——它常是内存盘(tmpfs),爆掉会直接触发OOM killer杀掉cc1plus
INSTALL_PREFIX,却让build仍在~/llvm-project/build,结果编译到70%时磁盘写满,前面所有工作白费。

















