c/c++編譯的四個過程(預編譯, 編譯,匯編,可執行程序)


引用參考狄泰軟件唐老師課程,有興趣淘寶店鋪搜索狄泰軟件

以下說明使用g++編譯器

兩個文件:test.cpp test.h
我們命令行編譯的指令是:g++ test.cpp -o test
但是這中間實際上經過了以下過程:

四步走:

1.預處理

命令:g++ -E test.cpp -o test.i
這部分操作:1.將宏定義展開,刪除#define
2.將注釋刪除,用空格代替
3.處理條件編譯 #ifdef #endif
4.處理頭文件#include,將包含的頭文件展開
5.處理#pragma指令
我們動手試一下在程序中包含上面這些,然后打開test.i,會發現它們都消失不見了,都按照上面的規則展開了

2.編譯

g++ -S test.i -o test.s
生成的是匯編文件
這部分操作:1.編譯器檢查語法,語義分析
2.分析關鍵字,類型是否合法
3.分析表達式是否合法

3.匯編

指令:g++ -c test.s -o test.o
這部分操作:1.將匯編代碼翻譯為機器可執行的二進制文件

4.生成可執行程序

指令:g++ test.o -o test
這部分操作:1.將機器指令代碼生成可以執行的文件

連起來就是1->2->3->4

g++幫助我們優化了,所以只需要g++ test.cpp -o test一條指令就可以實現上述操作

多個文件一起編譯

上圖:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM