使用GCC编译C代码,GCC自动生成.h.gch
个文件。
问题
如何抑制此事?
答案 0 :(得分:10)
以.gch
结尾的文件是预编译的头文件 - 已经过预编译的头文件,以便在您(重新)编译主程序时减少编译时间。
如果您使用头文件本身作为目标调用编译器,则会生成它们,即:
gcc myheader.h
通常,您只能使用.c文件作为目标来调用编译器。
如果您不希望它生成预编译头文件,则不要使用头文件作为目标来调用编译器。
如果您没有故意使用标头作为目标来调用编译器,那么您可能正在使用设置为生成这些文件的makefile - 它将具有从.h文件生成.gch文件的规则。您需要删除这些规则并调整其他规则,使其不依赖于它们。
答案 1 :(得分:4)
我来这里寻找同样问题的答案。我在另一个网站上找到了答案。如果将-fsyntax-only选项添加到编译行,则不会生成任何输出文件。
gcc -fsyntax-only myheader.h
我故意编译.h文件我正在努力检查语法错误。在这种情况下,生成.gch文件非常烦人,因为如果.h文件随后被修改,并且您不重新编译它(生成新的.gch),那么旧的.gch文件会隐藏较新的.h文件对于后续的.c / .cpp编译(这实际上可能非常令人困惑......)
现在我猜你可以编写一个虚拟的.c / .cpp文件来包含你刚刚编写的新标题,然后编译它来测试它,但是我太懒了这个废话。 -fsyntax-only似乎是一个更好的解决方案。