我正在使用 gcc 来编译我的 C 代码。出于好奇,我想知道错误发生在哪个阶段。有没有办法在编译出错的时候打印这些信息?
最佳答案
正如上面所评论的那样,如果您理解消息,则在确定消息的来源(预处理器、汇编器、编译器或链接器)时应该没有问题。然而,为了回答您的问题,这三个阶段可以通过传递给 gcc
的几个编译器选项轻松分开。
您可能会尝试的第一个选项是 -E
。传递 -E
将在预处理阶段后停止 gcc
,输出只是经过预处理的 C 代码。如果您的错误消息出现在那里,它是由预处理器生成的。否则,请继续阅读。
第二个选项是-S
。这将在预处理和编译之后但在汇编和链接之前停止 GCC。如果您在此阶段看到错误消息,则它是由预处理器(但您已在上一步中排除了它)或编译器生成的。否则,请继续阅读。
要尝试的第三个也是最后一个选项是 -c
。传递-c
将要求GCC 预处理、编译和汇编源文件,但不链接。如果您在此阶段看到错误消息,则它是由预处理器或编译器(但您排除了上一步中已经存在的那些)或汇编器生成的。否则它来自链接器。
关于c - 了解编译 C 代码时发生错误的阶段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17143608/