维基百科提到.bss
部分在目标文件中没有占用任何实际空间,我确实在.bss
信息中找到了一个大小为0的objdump
条目。所以问题是在目标文件中存在这样一个空部分的必要性是什么?
为什么.bss
只能在.o
和a.out
文件中添加到可执行文件中,就像.rel
仅出现在对象中一样文件。
更新:我想我误解了重新安置的过程。我首先想到链接器从头开始生成可执行文件,看到Downvoters的评论后它变成了错误。
答案 0 :(得分:0)
假设您的代码中已声明了全局变量int arr[1000000]
。如果此信息不在目标文件中,那么它也不能进入可执行文件。增加目标文件的大小以保存除垃圾之外的信息是没有意义的。对可执行映像保持相同。它会增加闪存要求,没有任何用处。在RAM中加载图像时,最好必须分配此区域。