Compiling
為什麼程序總是編譯成a.out?為什麼不是 p.out 或 c.out 或 g.prog?
從歷史上看,我知道當我執行
cc
命令或gcc
我的輸出通常總是編譯到,a.out
除非我有一個 make 文件或在編譯器上使用一個特定的標誌。但是為什麼a.out
?為什麼不c.out
或c.run
任何一百萬種可能性?
這是一件歷史文物,換句話說,是一種傳統的回歸。歷史上
a.out
代表“彙編器輸出”。
a.out
現在只是文件的名稱,但之前它也是執行檔的文件格式。現在
a.out
很少支持可執行格式。ELF 格式有更廣泛的用途,但我們仍然保留 C 編譯器預設輸出的舊名稱。
擴展@A.Meau 的答案……除了作為歷史文物之外,POSIX 還規定了預設名稱
a.out
:如果沒有阻止連結編輯的選項(例如**-c或-E**),並且所有輸入文件都編譯和連結沒有錯誤,則應根據**-o** outfile選項(如果存在)或將生成的執行檔寫入文件a.out。
無論執行檔使用的實際二進制格式如何,這都適用。
a.out
最初與特定格式相關聯,但現代 Linux 系統通常使用ELF。