ld-linux.so.2是鏈接器(linker)(ld)的運(yùn)行時(shí)組件, 它定位應(yīng)用程序使用的動(dòng)態(tài)庫(kù)并將其加載到內(nèi)存中
Elf 文件里面有 segment 走贪,有 section 酥筝。我們知道執(zhí)行的時(shí)候棒掠,所有的應(yīng)用程序都是首先通過(guò)加載器 ld.so 加載到內(nèi)存然后執(zhí)行的(內(nèi)部集成了加載器的除外),而所有的 elf 文件也都是經(jīng)過(guò)了鏈接的過(guò)程形成的。 Segment 就是提供信息給 ld.so 這個(gè)加載器信息,告訴他怎么加載的船侧,而 section 就是提供給 ld 程序,告訴他怎么鏈接的厅各。其實(shí) section 本質(zhì)上就是個(gè)記錄的作用镜撩, elf 沒有它也完全可以正常工作,因?yàn)?segment 已經(jīng)提供了工作所需要的信息队塘。但是 section 是 ld 鏈接的時(shí)候的工作過(guò)程琐鲁,記錄了將不同的內(nèi)容放到不同的文件位置的分布卫旱, section 表就是這個(gè)分布的一個(gè)總體描述。 section 的最大意義在于讓 elf 有語(yǔ)義的意義围段,沒有 section 只有 segment 的話, elf 就只是個(gè)可以執(zhí)行的文件投放,別人沒辦法分析他的組成奈泪,分析他的二進(jìn)制格式。缺少了二進(jìn)制層次上的語(yǔ)義灸芳,也正因?yàn)榉凑紱Q定要在二進(jìn)制文件中保留 section 了涝桅,那么有的 segment 也就可以用 section 來(lái)組織。畢竟可執(zhí)行文件的物理組裝是通過(guò) section 完成的烙样,而 segment 也要告訴 ld.so 怎么使用這個(gè)物理文件冯遂,所以兩者發(fā)生交互就會(huì)方便很多。而現(xiàn)在的很多 section 在運(yùn)行期間也是有用的谒获,例如 .text, .got 可以用來(lái)找到動(dòng)態(tài)庫(kù)的符號(hào)蛤肌。