Compiling

為什麼程序總是編譯成a.out?為什麼不是 p.out 或 c.out 或 g.prog?

  • January 18, 2022

從歷史上看,我知道當我執行cc命令或gcc我的輸出通常總是編譯到,a.out除非我有一個 make 文件或在編譯器上使用一個特定的標誌。但是為什麼a.out?為什麼不c.outc.run任何一百萬種可能性?

這是一件歷史文物,換句話說,是一種傳統的回歸。歷史上a.out代表“彙編器輸出”

a.out現在只是文件的名稱,但之前它也是執行檔的文件格式。

現在a.out很少支持可執行格式。ELF 格式有更廣泛的用途,但我們仍然保留 C 編譯器預設輸出的舊名稱。

擴展@A.Meau 的答案……除了作為歷史文物之外,POSIX 還規定了預設名稱a.out

如果沒有阻止連結編輯的選項(例如**-c-E**),並且所有輸入文件都編譯和連結沒有錯誤,則應根據**-o** outfile選項(如果存在)或將生成的執行檔寫入文件a.out

無論執行檔使用的實際二進制格式如何,這都適用。a.out最初與特定格式相關聯,但現代 Linux 系統通常使用ELF

引用自:https://unix.stackexchange.com/questions/316425