把GCC的編譯信息重定向到一個文件中
“gcc -c test.c 2> error.txt, Unix下錯誤輸出的ID一般爲2”
gcc的編譯流程分爲四個步驟,分別爲:
預處理(Pre-Processing)
編譯(Compiling)
彙編(Assembling)
鏈接(Linking
)
1)
預處理: (-E 只預處理 )
gcc –S hello.i –o hello.s
把對應的 *.c 文件內 include 的頭文件全部加入到一個 *.i的預處理源碼文件
2) 編譯: (-S 只編譯不彙編)
語法檢查,詞法分析
3) 彙編:
gcc –c hello.s –o hello.o
把代碼轉化成彙編代碼
4) 連接:
gcc hello.o –o hello
把目標文件連接成執行文件(連接函數庫)
靜態連接: 把使用到的外部函數以代碼的形式嵌入到執行文件中 (增加執行文件的體積,運行無需函數庫文件)
動態連接: 只是保存外部函數的一些call信息,用於程序運行時候會叫外部函數。
(體積比靜態要小,運行時候需要函數庫文件支持)