引用參考狄泰軟件唐老師課程,有興趣淘寶店鋪搜索狄泰軟件
以下說明使用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一條指令就可以實現上述操作
多個文件一起編譯
上圖: