編譯器工作流程
首先介紹下編譯器的工作流程,在使用gcc編譯程序時,編譯過程分為四個階段:
- 預處理(Pre-Processing)
- 編譯(Compiling)
- 匯編(Assembling)
- 鏈接(Linking)
常用編譯參數
無任何參數
gcc test.c
如果沒有添加任何參數,則編譯器將默認執行預處理、編譯、匯編、連接操作,最后直接生成默認名為a.out的可執行程序。
-o
參數:指定輸出名稱
gcc -o test test.c
使用-o
參數指定輸出名稱,不加-c、-S、-E參數,
-E
參數:只進行預處理
gcc -E -o test.i test.c
使用-E
參數對源程序進行預處理,將#include,#define等進行文件插入及宏擴展等操作,生成.i
后綴名的文件(不同版本不一樣,有的將預處理后的內容打印到屏幕上)。
-S
參數:進行預處理、編譯
gcc -S -o test.s test.c
使用-S
參數將對源程序進行預處理、編譯,生成.s
后綴名的匯編文件,里面包含匯編代碼。
-c
參數:進行預處理、編譯、匯編
gcc -c -o test.o test.c
使用-c
參數將對源程序進行預處理、編譯、匯編操作,生成.o
后綴名的目標文件。