程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> GCC編譯源代碼的四個步驟【轉】

GCC編譯源代碼的四個步驟【轉】

編輯:關於C語言

GCC編譯C源代碼有四個步驟:預處理---->編譯---->匯編---->鏈接。

可以利用GCC的參數來控制執行的過程,這樣就可以更深入的了解編譯C程序的過程。

下面將通過對一個程序的編譯來演示整個過程。

#include <stdio.h>

int main()
{
    printf("happy new year!\n");
    return 0;
}

  

 

1:預處理:編譯器將C程序的頭文件編譯進來,還有宏的替換,可以用gcc的參數-E來參看。

命令:gcc -E hello.c -o hello.i

作用:將hello.c預處理輸出hello.i

這個階段編譯器主要做詞法分析、語法分析、語義分析等,在檢查無錯誤後後,把代碼翻譯成匯編語言。可用gcc的參數-S來參看。

編譯器(ccl)將文本文件hello.i 翻譯成文本文件hello.s, 它包含一個匯編語言程序。匯編語言程序中的每條語句都以一種標准的文本格式描述了

一條低級機器語言指令。

命令:gcc -S hello.i -o hello.s
作用:將預處理輸出文件hello.i匯編成hello.s文件

3:匯編:把編譯階段生成的.s文件轉換為二進制目標代碼。可用gcc的參數-c來參看。匯編器(as)將hello.s翻譯成機器語言指令,把這些指令打包成可重定位目標程序的格式,並將結果保存在目標文件hello.o中。hello.o文件是一個二進制文件,它的字節編碼是機器語言。

命令:gcc -c hello.s -o hello.o

作用:作用:將匯編輸出文件hello.s編譯輸出hello.o文件

4:鏈接:把obj文件鏈接為可執行的文件:鏈接器(ld)負責.o文件的並入。結果就是hello文件,它是一個課執行的目標文件,可以加載到存儲器後由系統調用。

命令:gcc hello.o -o hello

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved