我想查看我的简单C应用程序的程序集。所以,我试图使用objdump
来生成二进制程序集,并且它会生成大约4.3MB大小的文件,其中103228行汇编代码为。然后,我试图通过向gcc
提供-S
& -save-temps
标志来完成此操作。为什么objdump生成的程序集很庞大?
我已经使用以下三个命令:
1. arm-linux-gnueabi-objdump -d hello_simple > hello_simple.dump
2. arm-linux-gnueabi-gcc -save-temps -static hello_simple.c -o hello_simple -lm
3. arm-linux-gnueabi-gcc -S -static hello_simple.c -o hello_simple.asm -lm
在2 & 3的情况下,恰好相同的结果产生的,即,65行汇编代码。我明白objdump
也会产生一些额外的细节。
但是,为什么有一个巨大的区别?
EDIT1:我用下面的命令来建立一个二进制:
arm-linux-gnueabi-gcc -static hello_simple.c -o hello_simple -lm
EDIT2:虽然,-static
和-lm
标志可以看这里没有必要,但是,我必须执行在模拟器中的二进制在编译时添加一些组件组件后,使其成为必需。
那么,在执行跟踪分析过程中,我应该认为哪个汇编代码最相关? (我知道这是另一个问题,但在相同的答案中可以方便地使用它。)
.debug_info我猜?试着首先去掉 –
如果你的程序使用了'-static'链接,它还会包含'libc'和其他链接到可执行文件的库。那些也会被'objdump'倾倒。 –
re:你最后的编辑。 '-static -lm'对**命令3没有任何影响。**它们显然对其他命令有所作用,因为这些* do *会产生二进制文件。 –