如何使用gcc编译到程序集

时间:2011-11-05 17:24:09

标签: c linux gcc x86

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

3 个答案:

答案 0 :(得分:28)

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

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

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

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

答案 1 :(得分: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)生成一个程序集文件

答案 2 :(得分:13)

把它放在任何地方。

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

会将生成的程序集存储在output.asm