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