如何从 gcc 中的 C/C++ 源代码获取汇编程序输出?
如何做到这一点?
如果我想分析某些东西是如何编译的,我将如何获得发出的汇编代码?
-
使用
-S
gcc(或 g++)的选项。gcc -S helloworld.c
这将在 helloworld.c 上运行预处理器 (cpp),执行初始编译,然后在运行汇编器之前停止。
默认情况下,这将输出一个文件
helloworld.s
。仍然可以使用该-o
选项设置输出文件。gcc -S -o my_asm_output.s helloworld.c
当然,这仅在您拥有原始来源时才有效。如果您只有生成的目标文件,另一种方法是使用
objdump
,通过设置--disassemble
选项(或-d
缩写形式)。objdump -S --disassemble helloworld > helloworld.dump
如果为目标文件启用了调试选项(
-g
在编译时)并且该文件没有被剥离,则此选项最有效。运行
file helloworld
将为您提供一些关于使用 objdump 将获得的详细程度的指示。