Compiler construction 如果BSS段不占用任何文件大小,它如何保存详细信息?

Compiler construction 如果BSS段不占用任何文件大小,它如何保存详细信息?,compiler-construction,linker,file-format,loader,elf,Compiler Construction,Linker,File Format,Loader,Elf,ELF规范表示.bss节不占用任何文件大小。我想知道,如果它不占用任何文件大小,它是如何保存细节的?请澄清。您没有引用ELF规范的部分,我搜索时没有发现明确标识的“BSS”,因此我将引用BSS的条目: 在计算机编程中,名称.bss 或bss被许多编译器和 数据段的一部分的链接器 包含静态分配的 仅由 零值位初始值(即,当 执行开始)。经常是这样 称为“bss部分”或 “bss部分” 答案很简单:如果您知道所有值都将被初始化为零,则无需在可执行文件中明确指定这些值。您没有引用ELF规范的部分,并且

ELF规范表示.bss节不占用任何文件大小。我想知道,如果它不占用任何文件大小,它是如何保存细节的?请澄清。

您没有引用ELF规范的部分,我搜索时没有发现明确标识的“BSS”,因此我将引用BSS的条目:

在计算机编程中,名称.bss 或bss被许多编译器和 数据段的一部分的链接器 包含静态分配的 仅由 零值位初始值(即,当 执行开始)。经常是这样 称为“bss部分”或 “bss部分”


答案很简单:如果您知道所有值都将被初始化为零,则无需在可执行文件中明确指定这些值。

您没有引用ELF规范的部分,并且当我搜索时,没有找到明确标识的“BSS”,因此我将引用BSS的条目:

在计算机编程中,名称.bss 或bss被许多编译器和 数据段的一部分的链接器 包含静态分配的 仅由 零值位初始值(即,当 执行开始)。经常是这样 称为“bss部分”或 “bss部分”


答案很简单:如果您知道所有值都将初始化为零,则无需在可执行文件中明确指定这些值。

好的。我使用readelf进行了分析,发现文件大小为130字节,头大小为134字节。4字节的差异似乎与进入BSS的变量相匹配。标题大小和文件大小的差异似乎等于BSS大小(变量应为BSS的一部分)。那么,这是否意味着BSS的内容不是文件的一部分,而是头的一部分?请澄清。@S.Man-将头视为可执行文件在内存中的外观描述,将文件的其余部分视为相应存储的内容可能会有所帮助。除此之外,我很抱歉,但是你的问题没有多大意义。我使用readelf进行了分析,发现文件大小为130字节,头大小为134字节。4字节的差异似乎与进入BSS的变量相匹配。标题大小和文件大小的差异似乎等于BSS大小(变量应为BSS的一部分)。那么,这是否意味着BSS的内容不是文件的一部分,而是头的一部分?请澄清。@S.Man-将头视为可执行文件在内存中的外观描述,将文件的其余部分视为相应存储的内容可能会有所帮助。除此之外,对不起,你的问题没有多大意义。