使用gcc -E生成无标准库的C中间文件时遇编译终止问题求助
解决gcc预处理时忽略标准头文件缺失的问题
直接给你最有效的解决方案:用-fignore-include-errors选项,它能让gcc忽略头文件找不到的错误,继续完成预处理流程,完全匹配你不需要解析标准头文件的需求。
完整命令如下:
gcc -E <FILE_NAME.c> -nostdinc -fignore-include-errors -o <FILE_NAME.i>
补充说明
如果你的代码里用到了标准头文件定义的宏(比如errno),预处理后这些宏会保持原样不展开,但这对你解析自己的函数调用树没有影响——毕竟你只关注自定义函数的调用关系。
要是这个选项没生效,还可以试试这两个备选方案:
- 手动创建空标准头文件:在当前目录新建空的
errno.h(以及其他报错的标准头文件),gcc会找到这些空文件并继续处理。 - 用
-D直接定义宏:如果代码里用到了标准头文件里的宏,比如errno,可以用-Derrno=0这类选项直接定义,绕开头文件依赖报错。
内容的提问来源于stack exchange,提问作者Justin
相关产品推荐
相关产品推荐

