[英]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。
哪里
- 预处理= source.i
- 汇编= source.s
- 对象= 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.