「A.out」:修訂間差異
從 JSON 檔案批量匯入 |
(無差異)
|
於 2025年8月24日 (日) 03:39 的最新修訂
a . out是舊版類 Unix 系統中用佇執行檔、目的碼佮尾仔系統中的函式庫的一種檔案格式,這个名稱的意思是組譯器輸出。
就算講這陣大多數類 Unix 系統攏已經改用 ELF 格式,無閣採用 _ a . out _ 格式,猶毋過編譯器佮連結器猶原會當使用者無指定檔名的時陣,將輸出檔案號做「a . out」。
應用
佇咧 UNIX 頭一版內底,就現予 PDP 抹七佮 PDP 鋪十一用的 _ a . out _ 格式。了後伊予人 UNIX System V 中的 COFF 所取代,而且 COFF 尾仔嘛去予人 SVR 四中的 ELF 格式所取代。
就算講 BSD 捌沿用一段時間的 _ a . out _ 格式,但較新的 BSD 系統攏切換著 ELF。NetBSD / i 三百八十六佇一鋪五版中正式對 _ a . out _ 切換著 ELF,FreeBSD / i 三百八十六是佇咧二四二到三鋪空的轉換中切換著 ELF 的。
_ a . out _ 格式對除毋著資訊的支援是由符號表中稱作「stabs」的特殊項實現的。真濟 COFF 和 ELF 變體中嘛用著矣 stabs 格式。
Linux 佇一爿二版的核心進前嘛捌使用 _ a . out _ 格式(實驗性的一孵一 . 五十二版內底加入矣嘿 ELF 的支援), 佇這爿了後嘛去予人 ELF 取代矣。Linux 之所以斡向 ELF,抑是濟或者是因為佇此平台頂懸構建一个 _ a . out _ 格式的函式庫所需要的複雜性過懸:因為乎 Linux 中 _ a . out _ 的 ld . so 袂當重定位共享函式庫,所以需要一个中央機構來註冊逐个函式庫的虛擬位址域。一寡仔 BSD 變體在 Linux 被迫轉向 ELF 了後猶閣用真久的 _ a . out _ 格式,因為比如講 Linux,BSD 的 _ a . out _ 略仔閣較靈活一寡。因為 a . out 格式的相關代碼已經老舊並無維護,而且已經是差不多無咧用 a . out 格式的存在,五孵一版核心決定欲移除相應的功能支援。
MINIX 三猶原將 _ a . out _ 作為二進位檔案的格式,毋過其他的支援共享函式庫。
格式
_ a . out _ 執行檔通常是以下幾種變體之一:OMAGIC、NMAGIC、QMAGIC 抑是 ZMAGIC。
OMAGIC
- OMAGIC 格式檔案頭了後有連紲段,無文字佮資料的分離。嘛予人用作目的檔格式。
NMAGIC
- NMAGIC 格式佮 OMAGIC 相仝,但資料段出現佇文字段結束了後的後一頁,而且文字段予人標為唯讀。
ZMAGIC
- ZMAGIC 格式加入矣對揤需分頁的支援,代碼段佮資料段的長度需要是頁闊的整數倍。
QMAGIC
- QMAGIC 二進位檔案通常予人載入佇虛擬位址池的底端,用通過段錯誤揣著對空指標的解除參照。_ a . out _ 頭部佮文字段的第一頁合併,通常會省後一頁的記持體。
CMAGIC
- 舊版的乎 Linux 使用這格式來囥核心轉儲。
_ a . out _ 檔案包含上濟七節,順序如下:
執行頭部
- 包含核心將二進位檔案載入記憶體閣執行所需要的參數,嘛包含講對動態連結器 ld 的指引。干焦本節是著愛出現的。
文字段
- 包含執行的時予人載入記持體的機器碼佮相關資料,可能是唯讀的。
資料段
- 包含已經初始化的資料,總是會當寫的。
文字重定位
- 包含連結編輯器佇合併二進位檔案的時修改文字段指標的記錄。
資料重定位
- 佮文字重定位一節類似,但是予資料段指標用的。
符號表
- 包含連結編輯器用佇交叉參照無仝二進位檔案中變數和函式(符號)的記錄。
字捾表
- 包含講對應於符號表的字串。
參見
- Portable Executable
- ELF
- Vasm,一个自由的組譯器
參考資料
外部連結
- a . out 格式
- a . out 格式的 Unix 手冊頁