.rodata和.rdata之间的主要(唯一?)区别在于文化差异。对于链接器和加载器(以及目标文件格式),您可以使用任何您喜欢的名称。只要在链接期间应该位于同一部分的内容使用相同的部分名称,并且充分描述了该部分的属性(例如使用链接器脚本,包括操作系统的默认链接器脚本),则不重要。如果愿意处理额外的麻烦,还没有什么阻止您拥有多个单独的部分(例如“rdata_initialization”,“rdata_frequently_used”和“rdata_rarely_used”以提高缓存局部性)。然而,为方便起见(考虑到大多数人不对部分进行任何特殊处理),为确保工具使用相同的名称用于相同的部分,编译器使用某个操作系统的“正常”作为默认值,并假定Windows为“.rdata”(因为这对于Windows来说是正常的),*nix克隆使用“rodata”(因为这对于Unix来说是正常的)。
.rdata
,在Linux/Unix系统上使用.rodata
(至少在ELF目标文件中是这样,我不确定MacOS Mach-O是否也是如此)。 - Peter Cordes