elf 檔案有三種型別:可重定位檔案:也就是通常稱的目標檔案,字尾為.o。共享檔案:也就是通常稱的庫檔案,字尾為.so。可執行檔案:本文主要討論的檔案格式,總的來說,可執行檔案的格式與上述兩種檔案的格式之間的區別主要在於觀察的角度不同:一種稱為連線檢視(linking view),一種稱為執行檢視(execution view)。
乙個典型的elf檔案有兩種描述檢視:program header和section header.
program header:是對程式執行時所使用的段的描述.
section header: 是對所有二進位制段的描述.
每乙個elf檔案是由乙個elf 檔案頭(elf header)和其餘的檔案資料構成.這些檔案資料報括一下一些內容:
·program header table 描述0個或是多個段(segments)
·section header table, 描述0個或是多個節(sections)
·要寫到上面兩個表中的資料.
段(segments)包含的是程式執行是必要的資訊
節(sections)包含的是鏈結和重定向時所需要的重要資料
同一時間整個檔案中的每個beyt不會屬於乙個以上的段,但是也可以存在不屬於任何段的位元組.
ELF檔案格式介紹
elf檔案由4部分組成,分別是elf頭,程式頭表 elf header 程式頭表 programme header table 節 sections 和節頭表 sections 實際上乙個檔案中並不一定含有上述全部的內容,實際上只有elf標頭檔案的位置是固定的,其餘各個部分的位置,大小等資訊由elf...
ELF檔案格式
在介紹elf格式之前,先簡單說明一下可執行檔案的生成流程 1 編寫c原始檔,或彙編原始檔 2 準備共享庫格式的目標檔案 shared object file 如數學庫 標準庫 2 用編譯器 compiler 將c編譯成可重定位格式的目標檔案 relocatable object file 用彙編器 ...
ELF檔案格式
1.目標檔案 編譯器和彙編器生成可重定位目標檔案 包括共享目標檔案 鏈結器生成可執行目標檔案。2.可重定位目標檔案和可執行目標檔案的格式 可重定位目標檔案格式 可執行目標檔案格式 3.下面我們開始分析上面 而對於未被初始化的全域性變數和靜態區域性變數,編譯的時候並未被分配空間,而是僅僅在.bss段中...