如何使用gcc编译到程序集

问题描述 投票:26回答:3

如何使用gcc编译为程序集而不是可执行文件。我知道有一个-S标志,但是在makefile中我在哪里使用它。例如,如果我使用标志-O3 -o exe_name,我应该在哪里放-S标志?

c linux gcc x86
3个回答
28
投票

我建议也使用-fverbose-asm,因为生成的汇编程序有一些生成的注释,“解释”代码。例如:

gcc -S -fverbose-asm -O2 foo.c

将在foo.s(带一些注释)生成汇编代码foo.c生成的汇编代码

要了解GCC优化正在做什么,甚至可以尝试-fdump-tree-all(但这会产生数百个文件!)。


23
投票

您可以要求GCC生成程序集文件,而不是目标文件(或可执行文件)。

例如:

gcc -Wall -c test.c

将从test.c(test.o)生成一个目标文件。

gcc -Wall -o test test.c

将从test.c生成一个名为'test'的可执行文件

gcc -Wall -S test.c

将从test.c(test.s)生成一个程序集文件


13
投票

把它放在任何地方。

gcc -O3 -S -o output.asm ...

将生成的程序集存储在qazxsw poi中。

© www.soinside.com 2019 - 2024. All rights reserved.