c 編譯過程

2021-09-18 06:11:12 字數 986 閱讀 8201

用c ++編譯源**檔案分為四個步驟。例如,如果您有乙個命名的c ++源**檔案prog1.cpp,則執行compile命令

g ++ -wall -std = c ++ 11 -o prog1 prog1.cpp

編譯過程如下所示:

c ++預處理器將包含的標頭檔案的內容複製到源**檔案中,生成巨集**,並替換使用#define它們的值定義的符號常量。

由c ++預處理器生成的擴充套件源**檔案被編譯為平台的組合語言。

編譯器生成的彙編**被彙編到平台的目標**中。

匯程式設計序生成的目標**檔案與用於生成可執行檔案的任何庫函式的目標**檔案鏈結在一起。

通過使用適當的編譯器選項,我們可以在任何階段停止此過程。

要在預處理器步驟之後停止該過程,可以使用以下-e選項:

g ++ -wall -std = c ++ 11 -e prog1.cpp
擴充套件的源**檔案將列印在標準輸出(預設情況下為螢幕); 如果您願意,可以將輸出重定向到檔案。請注意,擴充套件的源**檔案通常非常大 - 乙個20行的源**檔案可以輕鬆生成20,000行或更多的擴充套件檔案,具體取決於包含的標頭檔案。

要在編譯步驟後停止程序,可以使用以下-s選項:

g ++ -wall -std = c ++ 11 -s prog1.cpp
預設情況下,名為filename.cpp的原始檔的彙編**將放在名為filename.s的檔案中。

要在組裝步驟後停止該過程,可以使用以下-c選項:

g ++ -wall -std = c ++ 11 -c prog1.cpp
預設情況下,名為filename.cpp的原始檔的彙編**將放在名為filename.o的檔案中。

c編譯過程

編譯的概念 編譯程式讀取源程式 字元流 對之進行詞法和語法的分析,將高階語言指令轉換為功能等效的彙編 再由匯程式設計序轉換為機器語言,並且按照作業系統對可執行檔案格式的要求鏈結生成可執行程式。編譯的完整過程 c源程式 預編譯處理 c 編譯 優化程式 s asm 匯程式設計序 obj o a ko 鏈...

c 編譯過程

編譯過程主要分為 4個過程 1 編譯預處理 預編譯程式完成的工作,可以說成是對源程式的 替換 工作。經過這個過程,生成乙個沒有巨集定義 沒有條件編譯指令 沒有特殊符號的輸出檔案。2 編譯 優化階段 通過詞法分析 語法分析,在確認所有的指令都符合語法規則之後,將其翻譯成等價的中間 或彙編 在c 中,以...

C 編譯過程

以helloword.c 程式說明編譯過程 在預設的狀態下,如果我們直接以gcc編譯原始碼,並且沒有加上任何引數,則執行檔案的檔名會被自動設定為a.out 這個檔名。所以你就能夠直接執行 a.out這個這行檔案。hello.c 就是原始碼,gcc是編譯程式,a.out 是編譯成功的可執行檔案。如果我...