Rust运行cargo run提示增量编译会话目录垃圾回收失败如何解决?
报错信息:
warning: Failed to garbage collect incremental compilation session directory `\\?\C:\Users\linds\Desktop\advent_day_one\target\debug\incremental\advent_day_one-1ku18ek572o5z\s-g494tiepmq-1uzwqer-working`: Access is denied. (os error 5)
问题说明
该报错为Windows平台下Rust开发的常见问题,本质是增量编译目录被其他进程占用(安全软件扫描、上一次编译异常退出残留文件锁、当前用户权限不足),导致cargo无法清理过期的增量编译文件,通常不会影响正常编译和程序运行。
解决方案
彻底修复报错
- 手动清理缓存:关闭所有编译相关进程后,直接删除项目根目录下的
target文件夹,重新执行cargo run即可解决绝大多数偶发的该类报错 - 提升终端权限:右键点击所用终端(CMD、PowerShell、VS Code终端等)选择「以管理员身份运行」,进入项目目录后再执行
cargo run即可解决权限不足导致的报错 - 排除进程占用:如果报错反复出现,检查是否是安全软件(Windows Defender、第三方杀毒软件)正在扫描项目目录,将项目路径加入安全软件的排除列表即可;也可以通过系统资源监视器搜索对应增量目录路径,找到占用进程后手动结束
- 关闭增量编译:不需要增量编译加速的场景下,可以从根源关闭该功能避免报错:
- 项目级关闭:在项目根目录创建
.cargo/config.toml,添加如下配置:
[build] incremental = false- 全局关闭:配置系统环境变量
CARGO_INCREMENTAL=0,对所有Rust项目生效
- 项目级关闭:在项目根目录创建
仅隐藏警告
如果不影响正常使用,只想屏蔽该警告输出,可以使用cargo run --quiet命令执行编译,该参数会隐藏所有警告级别的输出,仅展示编译错误和程序运行的打印内容。
内容的提问来源于stack exchange,提问作者RowSalmon
相关产品推荐
相关产品推荐

