Loading AI tools
来自维基百科,自由的百科全书
a.out是舊版類Unix系統中用於執行檔、目的碼和後來系統中的函數庫的一種檔案格式,這個名稱的意思是組譯器輸出。
儘管目前大多數類Unix系統都已改用ELF格式,不再採用a.out格式,但編譯器和連結器依然會在用戶未指定檔名時,將輸出檔案取名為「a.out」。[1]
在UNIX第一版中,就出現了給PDP-7和PDP-11用的a.out格式。[2]之後它被UNIX System V中的COFF所取代,而COFF最後也被SVR4中的ELF格式所取代。
儘管BSD曾經沿用了一段時間的a.out格式,但較新的BSD系統都已切換到ELF。NetBSD/i386在1.5版中正式從a.out切換到ELF,FreeBSD/i386則是在2.2到3.0的轉換中切換到ELF的。
a.out格式對除錯資訊的支援是由符號表中稱作「stabs」的特殊項實現的。許多COFF和ELF變體中也用到了stabs格式。
Linux在1.2版內核之前也曾使用a.out格式(實驗性的1.1.52版中加入了對ELF的支援),在此之後也被ELF取代了。 [3]Linux之所以轉向ELF,或多或少是因為在此平台上構建一個a.out格式的函數庫所需的複雜性過高:因為Linux中a.out的ld.so不能重定位共用函數庫,所以需要一個中央機構來註冊各個函數庫的虛擬地址域。[4]一些BSD變體在Linux被迫轉向ELF之後仍然用了很久的a.out格式,因為相比於Linux,BSD的a.out略微更靈活一些。[5]由於a.out格式的相關代碼已經老舊並缺乏維護,而且已經幾乎沒有使用a.out格式的存在,5.1版內核決定移除相應的功能支援。[6]
a.out執行檔通常是以下幾種變體之一:OMAGIC、NMAGIC、QMAGIC或ZMAGIC。
a.out檔案包含至多七節,順序如下:
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.