【ARM 嵌入式 编译系列 10.2 -- 符号表与可执行程序分离详细讲解】

本文介绍了如何在ARM嵌入式系统中将符号表与可执行程序分离,以减小elf文件大小。通过eu-strip和objcopy两种方法,保留符号表以便在需要时导入进行调试。这种方法既能优化程序性能,又便于调试。
摘要由CSDN通过智能技术生成


请阅读【ARM GCC 编译专栏导读】


上篇文章: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文件了。

  1. 生成 release 版本的 test:
gcc -o test test.c
  1. 然后用 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] .bss              NOBITS           0000000000004010  00003010
       0000000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

主公讲 ARM

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值