2013-10-10 509 views

回答

3

当BSS部分更改为PROGBITS时,效果是输出文件中有更多NUL字节(零)。当.bss是NOBITS(它应该是)时,链接器会在输出文件中放入信息,告诉操作系统在加载程序时将一部分内存擦除为全零。如果它是PROGBITS,那么这些信息只会告诉操作系统从文件中加载存储区域,并且文件的该部分填充了零。所以唯一的负面影响是输出文件更大。

+0

PROGRITS相对于NOBITS有什么好处? – parvus

+0

当一个符号被明确地放置在分配给.bss 的节中时,自动类型开关被触发。显然这导致ld强制输出文件中存在整个bss节(即使用PROGBITS类型)。 – parvus

+0

>>所以唯一的负面影响是输出文件更大。 如果您没有加载程序(例如嵌入式系统),则可能需要使用PROGBITS for BSS。 –