2
如果这个问题过于笼统,但我无法在任何地方找到答案,我很抱歉。我想知道是否有任何负面影响的BSS部分改为PROGBITS。我一直在编译GCC 4.8.1下的程序时得到这个警告。预先感谢您的帮助。对ld:warning:section的`.bss'类型的负面影响更改为PROGBITS
如果这个问题过于笼统,但我无法在任何地方找到答案,我很抱歉。我想知道是否有任何负面影响的BSS部分改为PROGBITS。我一直在编译GCC 4.8.1下的程序时得到这个警告。预先感谢您的帮助。对ld:warning:section的`.bss'类型的负面影响更改为PROGBITS
当BSS部分更改为PROGBITS时,效果是输出文件中有更多NUL字节(零)。当.bss是NOBITS(它应该是)时,链接器会在输出文件中放入信息,告诉操作系统在加载程序时将一部分内存擦除为全零。如果它是PROGBITS,那么这些信息只会告诉操作系统从文件中加载存储区域,并且文件的该部分填充了零。所以唯一的负面影响是输出文件更大。
PROGRITS相对于NOBITS有什么好处? – parvus
当一个符号被明确地放置在分配给.bss 的节中时,自动类型开关被触发。显然这导致ld强制输出文件中存在整个bss节(即使用PROGBITS类型)。 – parvus
>>所以唯一的负面影响是输出文件更大。 如果您没有加载程序(例如嵌入式系统),则可能需要使用PROGBITS for BSS。 –