我有一個簡單的組裝文件main.s
其中包含:爲什麼「strip」不去除這些調試符號?
mysymbol1=1234
我使用下面的命令彙編成一個對象文件:
$ arm-none-eabi-as main.s -o main.o
現在我檢查符號表
$ arm-none-eabi-objdump -t main.o
main.o: file format elf32-littlearm
SYMBOL TABLE:
00000000 l d .text 00000000 .text
00000000 l d .data 00000000 .data
00000000 l d .bss 00000000 .bss
000004d2 l *ABS* 00000000 mysymbol1
00000000 l d .ARM.attributes 00000000 .ARM.attributes
我注意到d
表示有調試符號包含,所以我跑:
$ arm-none-eabi-strip --strip-debug main.o
重新運行objdump顯示了調試符號沒有被刪除,雖然他們已經重新排序:
$ arm-none-eabi-objdump -t main.o
main.o: file format elf32-littlearm
SYMBOL TABLE:
000004d2 l *ABS* 00000000 mysymbol1
00000000 l d .text 00000000 .text
00000000 l d .data 00000000 .data
00000000 l d .bss 00000000 .bss
00000000 l d .ARM.attributes 00000000 .ARM.attributes
爲什麼AREN調試符號被刪除了嗎?
這些符號表示節的名稱。這就是爲什麼'strip'不會擺脫它們的原因。它們不是調試符號。 – fuz
謝謝。任何想法爲什麼是'd'位標誌被設置? – donturner
我不知道GNU binutils足以回答這個問題。 – fuz