繁体   English   中英

如何在Linux中编译后以这样的方式编译c / cpp代码以提供经过预处理的汇编文件和目标文件?

[英]how to compile c/cpp code in such a way that it gives preprocessed assembled and object file after compilation in linux?

如果源文件是source.cpp,则编译器输出在我的目录中不仅应包含.o文件,还应具有source.i source.s source.o。

哪里

  1. 预处理= source.i
  2. 汇编= source.s
  3. 对象= source.o

我知道正在创建前两个文件,但后来它们仅被删除。o文件显示出来,以便链接器可以链接目标文件,但我也想看到这两个文件。

对于Linux的任何标志或东西?

根据gcc手册页

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

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

g++ -save-temps source.cpp

您可以为编译器的每个阶段创建单个文件。

预处理程序: g++ -E file.cpp -o file.i

译者: g++ -S file.i -o file.s

汇编器: g++ -c file.s -o file.o

链接器: g++ file.o -o file

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM