makefile: gcc 工作流程

來源:互聯網
上載者:User

c 語言經過預先處理、編譯、串連最後產生可執行檔。


在 linux 的編譯器 gcc 下面,看看其工作流程。


流程圖:




預先處理,將包含的 *.h 檔案或者一些預先處理語句(#define)處理一下,然後將 *.c 檔案產生 *.i 的中間檔案。

但是注意了 gcc 不會自動產生這樣一個檔案,如果需要,自己加 -E 參數即可。


編譯、彙編階段產生 *.o 目標檔案,最後經過串連產生可執行檔。

注意:可執行檔不一定是 exe 檔案。


下面還是以一個執行個體 hello.c,說明這個過程。




源檔案很簡單,這裡只是為了說明問題。


在命令列,執行下面命令完成預先處理:


gcc  -E  hello.c  -o  hello.i


執行之後,你可以開啟 hello.i 檔案,可以看到很多 extern 以及將 MAX 解釋為 20:




在命令列,執行下面命令完成編譯階段:


gcc  -S  hello.i  -o hello.s 


這時可以產生 *.s 檔案,其實就是一些彙編語句,如下所示:




那麽,我們就可以進入彙編階段了,執行:


gcc  -c  hello.s  -o hello.o


開啟這個 hello.o 檔案,都是一些機器碼(^ - ^看不懂 )。


最後一個串連產生可執行檔:


gcc hello.o -o hello


在目前的目錄就可以產生 hello 這個可執行檔。


執行 ./hello,就會輸出:




到此,gcc 編譯串連產生可執行檔完畢!目前的目錄下面的檔案:




以上的步驟,其實一句命令即可:


gcc  hello.c  -o  hello


此時目錄內容如下:




自己動手感受一下,你會收穫更多!








聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.