ELF文件中的特殊節匯總


+以下內容摘抄自:ELF文件系列第三篇ELF文件靜態結構中的節

+【附聲明和鏈接如下】

版權聲明:本文為CSDN博主「廣敏」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/u011298001/java/article/details/84862565


在 ELF 文件中有一些特定的節是預定義好的,其內容是指令代碼或者控制信息,這些節專門為操作系統使用。在構建可執行程序時,連接器(linker)可能需要把一些獨立的目標文件和庫文件連接在一起,在這個過程中,連接器要解析各個文件中的相互引用,調整某些目標文件中的絕對引用,並重定位指令碼。每種操作系統都有自己的一套連接模型,但總的來說,不外乎靜態和動態兩類:

靜態鏈接所有的目標文件和庫被靜態地綁定在一起,所有的符號都被解析出來。所創建的目標文件是完整的,運行時不依賴於任何外部的庫。

動態鏈接:所有的目標文件、系統共享資源以及共享庫以動態的形式連在一起,外部庫的內容沒有完整地拷貝進來。如果創建的是可執行文件的話,程序在運行的時候,構建時所依賴的那些庫必須在系統中能找到,把它們一並load之后,程序才能運行起來。運行期間如何解析那些動態鏈接進來的符號引用,不同系統有各自不同的方式。

動態鏈接過程所需要的信息由.dynsym、.dynstr、.interp、.hash、.dynamic、.rel、.rela、.got、.plt 等節提供。.init 和.fini 節用於進程的初始化和終止過程。

特殊節匯總表:

以點號“.”為前綴的節名字是為系統保留的。應用程序也可以構造自己的段,但最好不要取與上述系統已定義的節相同的名字,也不要取以點號開頭的名字,以避免潛在的沖突。注意,目標文件中節的名字並不具有唯一性,可以存在多個相同名字的節。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM