什么是对象文件中.bss部分的必要性?

时间:2016-07-14 06:55:35

标签: c compiler-construction linker abi

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

为什么.bss只能在.oa.out文件中添加到可执行文件中,就像.rel仅出现在对象中一样文件。

更新:我想我误解了重新安置的过程。我首先想到链接器从头开始生成可执行文件,看到Downvoters的评论后它变成了错误。

1 个答案:

答案 0 :(得分:0)

假设您的代码中已声明了全局变量int arr[1000000]。如果此信息不在目标文件中,那么它也不能进入可执行文件。增加目标文件的大小以保存除垃圾之外的信息是没有意义的。对可执行映像保持相同。它会增加闪存要求,没有任何用处。在RAM中加载图像时,最好必须分配此区域。