如何编译c/cpp代码,以便在linux中编译后提供预处理的汇编和目标文件?

Rup*_*av. 1 c c++ linux

如果源文件是source.cpp,那么编译器输出应该在我的目录中有source.i source.s source.o,而不仅仅是.o文件.

哪里

  1. preprocessed = source.i
  2. assembly = source.s
  3. object = source.o

我知道前两个文件正在创建但后来他们只删除.o文件显示,以便链接器可以链接目标文件,但我也希望看到这两个文件.

对于linux任何标志或什么?

Ase*_*ela 7

根据gcc手册页

-save-temps -save-temps = cwd永久存储通常的"临时"中间文件; 将它们放在当前目录中,并根据源文件命名它们.因此,使用-c -save-temps编译foo.c会生成文件foo.i和foo.s,以及foo.o. 这会创建一个预处理的foo.i输出文件,即使编译器现在通常使用集成的预处理器.

所以你应该像这样编译你的代码

g++ -save-temps source.cpp
Run Code Online (Sandbox Code Playgroud)