【问题标题】:binary file generated by gcc objcopy has a size much larger than sum of 'text' and 'data' in gcc size outputgcc objcopy 生成的二进制文件的大小远大于 gcc 大小输出中“文本”和“数据”的总和
【发布时间】:2021-12-13 14:14:06
【问题描述】:

我使用objcopy -S -g -O binary test.elf test.bin.elf 获取.bin 文件。

$ ll test.bin 
-rwxr-xr-x 1 hongzhuwang md_psw 1472320 Oct 28 19:07 test.bin
$ size test.elf 
   text    data     bss     dec     hex filename
 173062    6328 6605424 6784814  67872e test.elf

test.bin 的大小显然大于test.elftextdata 的总和。为什么会有如此巨大的差异? objcopy 会将哪些部分从 .elf 复制到 .bin

【问题讨论】:

  • 显示来自readelf -WS test.elf 的输出可能会改善您将获得的答案。

标签: gcc elf objcopy


【解决方案1】:

我在链接器脚本的PROGBITS 部分之间发现了一些NOBITS 部分。二进制文件将占用一个连续的地址空间,因此NOBITS 部分的空间被objcopy 填充为零。我认为这是造成差异的根本原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    相关资源
    最近更新 更多