Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在linux中编译c/cpp代码,从而在编译后提供预处理的汇编文件和对象文件?_C++_C_Linux - Fatal编程技术网

C++ 如何在linux中编译c/cpp代码,从而在编译后提供预处理的汇编文件和对象文件?

C++ 如何在linux中编译c/cpp代码,从而在编译后提供预处理的汇编文件和对象文件?,c++,c,linux,C++,C,Linux,如果源文件是source.cpp,那么编译器输出应该有source.i source.s 我的目录中的source.o不仅仅是.o文件 在哪里 预处理=source.i assembly=source.s object=source.o 我知道前两个文件正在创建中,但后来它们只被删除了 显示链接器可以链接对象文件,但我也想看到这两个文件 对于linux,是否有任何标志或其他内容?根据gcc手册页 -节省时间 -保存temps=cwd 永久存储常用的临时中间文件;将它们放在当前目录中,并根据源文件

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

在哪里

预处理=source.i assembly=source.s object=source.o 我知道前两个文件正在创建中,但后来它们只被删除了 显示链接器可以链接对象文件,但我也想看到这两个文件


对于linux,是否有任何标志或其他内容?

根据gcc手册页

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

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

g++ -save-temps source.cpp

根据gcc手册页

-节省时间 -保存temps=cwd 永久存储常用的临时中间文件;将它们放在当前目录中,并根据源文件命名它们。因此,使用-c-save temp编译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

链接器:
o-o文件

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

预处理器: 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

执行简单的man gcc…并获取生成特定文件所需的开关,可能会更改生成文件以分解单阶段编译。执行简单的man gcc…并获取生成特定文件所需的开关,可能会更改生成文件以分解单阶段编译。