<a href="#1%E7%BC%96%E8%AF%91%E6%B5%81%E7%A8%8B%E5%9B%BE%E7%A4%BA" target="_blank">1編譯流程圖示</a>
<a href="#2%E7%BC%96%E8%AF%91%E5%90%84%E9%98%B6%E6%AE%B5%E5%91%BD%E4%BB%A4" target="_blank">2編譯各階段指令</a>
<a href="#2-1%E9%A2%84%E5%A4%84%E7%90%86%E9%98%B6%E6%AE%B5" target="_blank">2-1預處理階段</a>
<a href="#2-2-%E7%BC%96%E8%AF%91%E9%98%B6%E6%AE%B5" target="_blank">2-2 編譯階段</a>
<a href="#2-3-%E6%B1%87%E7%BC%96%E9%98%B6%E6%AE%B5" target="_blank">2-3 彙編階段</a>
<a href="#2-4-%E9%93%BE%E6%8E%A5%E9%98%B6%E6%AE%B5" target="_blank">2-4 連結階段</a>
<a href="#3%E4%BE%8B%E5%AD%90" target="_blank">3例子</a>
我們在Linux環境下編譯單個C檔案時,最簡單的方法是輸入一條指令<code>gcc hello.c</code>就可以生成預設的可執行檔案<code>a.out</code>,展開該指令可以看到實際流程如下。

預處理階段 -> 編譯階段 -> 彙編階段 -> 連結階段
預處理階段
編譯階段
彙編階段
連結階段
把.c檔案預處理指令替換為對應的頭檔案内容,并合并成.i檔案中。
預處理階段主要處理下面四件事:
将頭檔案内容包含進.c源檔案中;
删除注釋;
宏替換;
條件編譯;
把源檔案編譯成彙編語言,并生成.s檔案。
把源檔案彙編成機器語言,并生成.o目标檔案。
把源檔案連結成可執行檔案(Linux下的檔案名字尾是随便可取的,隻是檔案裡的内容格式不變而已)。
Wu_Being部落格聲明:本人部落格歡迎轉載,請标明部落格原文和原連結!謝謝!
如果你看完這篇博文,覺得對你有幫助,并且願意付贊助費,那麼我會更有動力寫下去。