负面影响:ld警告:节段“.bss”的类型更改为PROGBITS

4

如果我的问题太笼统,我很抱歉,但我一直找不到答案。 我想知道将bss节更改为PROGBITS是否会有任何负面影响。 我在使用GCC 4.8.1编译程序时遇到了此警告。 感谢您的任何帮助。

1个回答

4
当BSS段被改为PROGBITS时,输出文件中会有更多的NUL字节(零)。当.bss是NOBITS时(应该是这样的),链接器会将信息放入输出文件中,告诉操作系统在程序加载时将内存部分清空为零。如果它是PROGBITS,则此信息仅告诉操作系统从文件中加载内存区域,并且该文件的该部分填充了零。因此,唯一的负面影响是输出文件变大。

PROGBITS相对于NOBITS的好处是什么? - parvus
3
当符号被明确放置在分配给 .bss 的段中时,自动类型切换会被触发。显然,这会导致 ld 强制在输出文件中存在整个 bss 段(即使用 PROGBITS 类型)。 - parvus
所以唯一的负面影响就是输出文件更大了。如果你没有加载器(例如嵌入式系统),你可能想要使用PROGBITS来处理BSS。 - Zinovy Nis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接