上篇文章:ARM 嵌入式 编译系列 10.1 – GCC 编译缩减可执行文件 elf 文件大小
下篇文章:ARM 嵌入式 编译系列 10.3 – GNU elfutils 工具小结
符号表与可执行程序分离
接着上篇文章 ARM 嵌入式 编译系列 10.1 – GCC 编译缩减可执行文件 elf 文件大小 介绍,在前两篇文章中我们去掉了 可执行文件 test 中的很多内容,节省了大量的空间。由于我们把符号表也移除了,发生了coredump 我们通过gdb 工具也无法调试了。
Q: 那么我们是否可以把符号表信息保留,需要用符号表的时候在将符号表的信息导入?
A:可以。
方法一 使用eu-strip
eu-strip 可以把文件的符号表保存起来,需要用的时候,导入需要的符号表就能调试 coredump文件了。
- 生成 release 版本的 test:
gcc -o test test.c
- 然后用
eu-strip生成符号表:
eu-strip test -f test.sym
使用 eu-strip 生成的test.sym 后,可执行文件 test 中会多出多一个.gnu_deubg_link section,用来记录符号表的位置。
:~/temp$ readelf -S test
There are 30 section headers, starting at offset 0x3168:
...
[25] .data PROGBITS 0000000000004000 00003000
0000000000000010 0000000000000000 WA 0 0 8
[26

本文介绍了如何在ARM嵌入式系统中将符号表与可执行程序分离,以减小elf文件大小。通过eu-strip和objcopy两种方法,保留符号表以便在需要时导入进行调试。这种方法既能优化程序性能,又便于调试。
最低0.47元/天 解锁文章
1877

被折叠的 条评论
为什么被折叠?



