【问题标题】:What's the necessity of .bss section in an object file? [duplicate]目标文件中 .bss 部分的必要性是什么? [复制]
【发布时间】:2016-07-14 06:55:34
【问题描述】:

维基百科提到.bss 部分在目标文件中不占用实际空间,我确实在objdump 信息中找到了大小为0 的.bss 条目。所以问题是目标文件中存在这样一个空部分的必要性是什么?

为什么.bss不能只添加在可执行文件中,而不是同时添加在.oa.out文件中,就像.rel只出现在目标文件中一样。

更新:我想我误解了搬迁的过程。我一开始以为可执行文件是链接器从头开始生成的,看到Downvoters的评论后发现是错误的。

【问题讨论】:

  • 我不太明白你的问题。可执行文件中的部分是由可执行文件组成的目标文件中的部分,那么,如果不是通过在目标文件中定义它,可执行文件应该如何包含一个部分?

标签: c compiler-construction linker abi


【解决方案1】:

假设您在代码中声明了一个全局变量 int arr[1000000] 。如果此信息不在目标文件中,则它也无法进入可执行文件。增加目标文件的大小来保存只是垃圾的信息是没有意义的。对可执行映像同样持有。它会增加对闪存的需求并且毫无用处。加载图像到 RAM 时最好分配这个区域。

【讨论】:

    猜你喜欢
    • 2014-10-06
    • 1970-01-01
    • 2020-12-18
    • 1970-01-01
    • 1970-01-01
    • 2017-03-11
    • 1970-01-01
    • 2016-08-27
    • 2021-05-29
    相关资源
    最近更新 更多