【編譯階段】
預處理 --> 編譯成彙編代碼 --> 編譯成機器碼 --> 鏈接
gcc -E: 預處理完之後停止
gcc -S: 生成彙編代碼之後停止
gcc -c: 生成 .o 機器碼之後停止
cpp: The C Preprocessor. IN: .c, OUT: .i or others
as: The assembler. IN: .S, OUT: .o
ld: The linker.
.c --(gcc -E or cpp)--> .i or others(宏展開後的 C 代碼)
.c or .i --(gcc -S)--> .s(彙編代碼)
.c or .i or .s --(gcc -c)--> .o(機器碼)