上述的回答仅适用于静态二进制文件,对于共享目标文件(shared object files)如何处理,我现在不太清楚内部实现细节. 但初看起来的话,共享目标文件中的section信息应该会用于重定向。 在 2012年11月6日 下午1:45,Triple Yang <triple.yang@xxxxxxxxx>写道: > 所以你的问题答案是: > 1. elf按照segment而不是section加载,每一个segment有一个虚拟加载地址 > 2. 内存中的分段管理是一种存储资源使用策略,从命名来看,二者是有渊源的,但――没有直接联系 > 3. section header中会为该section给出一个虚拟地址,但这个地址不是用于程序加载的 > > > 在 2012年11月6日 下午1:30,Triple Yang <triple.yang@xxxxxxxxx>写道: > > elf格式的二进制镜像分为object file和executable file. >> >> elf文件加载的对象是executable file,以segment为处理单位,即一个segment对应一个内存位置。 >> 一个segment由一至多个section构成 >> >> 在object file中只有section而没有segment。 >> 另一方面,executable file中必然有segment,但也允许有section信息 >> 直观看起来是,某些数据既属于一个section, 也属于某个segment,或者说,这个section属于该segment. >> >> 建议你看看elf specs: http://refspecs.freestandards.org/elf/elf.pdf >> 以及:http://en.wikipedia.org/wiki/Executable_and_Linkable_Format >> >> >> 在 2012年11月6日 上午9:16,horse_rivers <horse_rivers@xxxxxxx>写道: >> >> hi, >>> >>> 请教一下elf文件加载的相关细节: >>> 1.elf加载是不是按照section加载,即每一个section加载到一个内存段中。 >>> >>> 2.内存中分段管理和section之间有没有关系? >>> >>> >>> 3.elf中的每 一个section有没有加载的地址? >>> >>> >>> 望不吝赐教!祝好! >>> >>> >>> >>> >> >> >> -- >> 杨勇勇 (Yang Yongyong) >> > > > > -- > 杨勇勇 (Yang Yongyong) > -- 杨勇勇 (Yang Yongyong)