C++編譯流程

編譯流程:
1. 預處理

	1. 完成宏替換、文件引入、以及去除空行、註釋等,爲下一步的編譯做準備。
	2. 對各種預處理命令進行處理,包含頭文件的包含、宏定義的擴展、條件編譯的選擇等。
	命令:`gcc -E test.c -o test.i ` 
	-E是讓gcc在預處理結束後停止編譯,test.c爲源代碼文件,test.i爲預處理後輸出的文件

2. 編譯

1. 講預處理後的代碼編譯成彙編代碼。在這個階段主要檢查代碼的規範性、是否有語法錯誤等,以確定代碼實際要做的工作,在檢查無誤後,再把代碼翻譯成彙編語言
2. 編譯程序執行時,先分析,後綜合。分析,就是指詞法分析、語法分析、語義分析和中間代碼生成。綜合,就是指代碼優化和代碼生成。
3. 大多數的編譯程序直接產生機器語言的目標代碼,形成可執行的目標文件,也有的是先產生彙編一級的符號代碼文件,再調用匯編程序進行翻譯和加工處理,最後產生可執行的機器語言目標文件。
命令:`gcc -S test.i -o test.s`
-S是讓gcc在編譯結束後停止編譯過程,test.s文件爲編譯後生成的彙編代碼。

3. 彙編

1. 彙編就是把編譯階段生成的.s文件轉換成目標代碼,也就是機器代碼(01序列) 
命令:`gcc -c test.s -o test.o`
-c讓gcc在彙編結束後停止編譯過程,test.o文件是彙編後生成的機器碼目標文件。

4. 鏈接

1. 鏈接就是將多個目標文件以及所需的庫文件鏈接生成可執行目標文件的過程
命令:`gcc test.o -o test`
-o本質上是一個重命名選線,不是用-o選項時,默認生成的是a.out文件。

5. 運行

命令:`./test`

上述步驟 一條命令 gcc -o test test.c 即可生成可執行的目標文件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章