天天看點

C語言編譯流程1、編譯流程圖示2、編譯各階段指令3、例子

<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語言編譯流程1、編譯流程圖示2、編譯各階段指令3、例子

預處理階段 -&gt; 編譯階段 -&gt; 彙編階段 -&gt; 連結階段

預處理階段

編譯階段

彙編階段

連結階段

把.c檔案預處理指令替換為對應的頭檔案内容,并合并成.i檔案中。

預處理階段主要處理下面四件事:

将頭檔案内容包含進.c源檔案中;

删除注釋;

宏替換;

條件編譯;

把源檔案編譯成彙編語言,并生成.s檔案。

把源檔案彙編成機器語言,并生成.o目标檔案。

把源檔案連結成可執行檔案(Linux下的檔案名字尾是随便可取的,隻是檔案裡的内容格式不變而已)。

Wu_Being部落格聲明:本人部落格歡迎轉載,請标明部落格原文和原連結!謝謝!

C語言編譯流程1、編譯流程圖示2、編譯各階段指令3、例子

如果你看完這篇博文,覺得對你有幫助,并且願意付贊助費,那麼我會更有動力寫下去。

繼續閱讀