You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GCC中预编译头结合依赖生成(-MM)失败,-fpch-deps使用求助

GCC预编译头与依赖生成(-MM)结合失败问题

我正尝试将预编译头与依赖生成(-MM)结合,为make生成依赖文件,但无法通过-fpch-deps实现二者结合。此举旨在加速需数小时构建的大型代码库的增量构建。使用GCC 9.3.1编译C代码,在红帽版本的GCC10中得到相同结果。

测试代码

// src/a.c
#include "h.h"
int main(int argc, char **argv) { printf("hello\n") ; }
// include/h.h
#include <stdio.h>

测试步骤与命令

mkdir obj
# 生成预编译头
gcc include/h.h -o obj/h.h.gch

# 基于预编译头编译代码(验证有效)
gcc -I obj src/a.c
# 执行输出hello,确认预编译头工作正常
./a.out

# 尝试基于预编译头生成依赖(失败)
gcc -MM -I obj -fpch-deps src/a.c -Winvalid-pch

报错信息

fatal error: h.h: no such file or directory

报错表明GCC未搜索obj/h.h.gch文件。

已完成的验证

  • 通过strace确认GCC在依赖生成期间未尝试访问预编译头文件
  • 通过gcc -v确认pch-deps和invalid-pch已传递给cc1
  • obj/h.h.gch文件已生成,权限正确

求助点

我是否误解或误用了-fpch-deps?望得到帮助。

内容的提问来源于stack exchange,提问作者dash-o

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 06:01:03