我想查看我的簡單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 *會產生二進制文件。 –