2010-04-16 28 views
3

我想编译一个项目,在我拥有的ARM板上运行。要使用调试器,我必须将调试符号放在生成的.elf文件中。为什么不将调试符号添加到我的输出文件中?

我配置一切,跑我的makefile,这就产生了如下结果:

arm-elf-gcc -x assembler-with-cpp -c -mcpu=arm7tdmi-s -g -gdwarf-2 -Wa,-amhls=src/crt.lst src/crt.S -o src/crt.o 
arm-elf-gcc -c -mcpu=arm7tdmi-s -O0 -g -gdwarf-2 -mthumb-interwork -fomit-frame-pointer -Wall -Wstrict-prototypes -fverbose-asm -Wa,-ahlms=src/main.lst -MD -MP -MF  .dep/main.o.d -I . -I./inc src/main.c -o src/main.o 
arm-elf-gcc -c -mcpu=arm7tdmi-s -O0 -g -gdwarf-2 -mthumb-interwork -fomit-frame-pointer -Wall -Wstrict-prototypes -fverbose-asm -Wa,-ahlms=library/md5.lst -MD -MP -MF .dep/md5.o.d -I . -I./inc library/md5.c -o library/md5.o 
arm-elf-gcc -c -mcpu=arm7tdmi-s -O0 -g -gdwarf-2 -mthumb-interwork -fomit-frame-pointer -Wall -Wstrict-prototypes -fverbose-asm -Wa,-ahlms=library/bignum.lst -MD -MP -MF .dep/bignum.o.d -I . -I./inc library/bignum.c -o library/bignum.o 

arm-elf-gcc ./src/crt.o ./src/main.o ./library/md5.o ./library/bignum.o -mcpu=arm7tdmi-s -g -nostartfiles -T./prj/LPC2138_flash.ld -Wl,-Map=testFLASH.map,--cref,--no-warn-mismatch -nostdlib -L. -Wl,-static -ffunction-sections -Wl,--gc-sections -Wl,-s -fdata-sections -lc -lg -lnosys -o testFLASH.elf 

我已经把在-g标志,但是当我试图找到调试符号,我只得到:

C:\Users\stkerr\Code\EclipseWorkspace\LibraryWork>objdump -g testFLASH.elf 

testFLASH.elf:  file format elf32-little 

当我尝试在调试器中打开.elf文件时,进一步证实了这一点,我得到关于该文件没有调试符号的错误。

任何人都可以指出我的arm-elf-gcc调用中出现错误或者我缺少一个标志吗?

回答

2

在文档中稍微多了一点之后,-Wl,-s就是问题所在。

它从生成的可执行文件中去除所有符号,包括调试信息。

相关问题