3
我無法找到翻譯單元,編譯單元,目標文件,可執行文件之間的區別......在很多地方我看到過那個被用來代替其他。翻譯單位vs編譯單元vs目標文件vs可執行文件vs ....在C++中
我知道這些文件是在C++程序編譯和鏈接期間生成的。任何人都可以列出在這些過程中生成的所有文件,並指定它們之間的區別?
我無法找到翻譯單元,編譯單元,目標文件,可執行文件之間的區別......在很多地方我看到過那個被用來代替其他。翻譯單位vs編譯單元vs目標文件vs可執行文件vs ....在C++中
我知道這些文件是在C++程序編譯和鏈接期間生成的。任何人都可以列出在這些過程中生成的所有文件,並指定它們之間的區別?
翻譯單元相同compilaition單元(所以你的來源和所有它包含頭文件)
目標文件,在典型情況下,是正在編譯的編譯單元的結果。
可執行文件是鏈接項目的目標文件以及運行時庫函數的結果。
編譯過程中究竟生成了哪些文件取決於編譯器,但大多數現代編譯器只會讀取源文件和頭文件,然後生成目標文件,如果只有一個源文件,則直接傳遞給鏈接器。這產生可執行文件。
舊的編譯器將「預處理」作爲一個單獨的步驟,所以你最終會把所有的編譯單元都放在一個臨時文件中。同樣,在過去,代替在目標文件中生成機器代碼,彙編代碼將由編譯器輸出,然後通過彙編程序彙編,這將生成目標文件。鏈接仍然類似。
請注意,這只是練習,C或C++標準中沒有關於可執行文件或對象文件的內容。編譯器實現需要以任何他們喜歡的方式解決這些問題。