天天看點

GNU編譯器(gcc):Linux下最強大的編譯器

        編譯是指,把人能看懂的代碼翻譯成機器能夠看懂的語言(機器語言),gcc是Linux環境下最強大的編譯器。下面談談GNU編譯器對C語言代碼編譯的操作過程及方法:

        編譯過程有四部分,即:預處理 -> 編譯 -> 彙編 -> 連結

以編譯 hello.c 檔案為例

        預處理:

gcc hello.c -E -o hello.i
           

調用預處理器cpp,完成宏展開,處理條件編譯,删除注釋,生成.i檔案

        編譯:

gcc hello.c -S -o hello.s
           

調用編譯器cc1,把源程式經 預處理 編譯,翻譯成對應于目标系統的.s彙編檔案

        彙編:

gcc hello.c -C -o hello.o
           

調用彙編器as,将彙編指令翻譯成機器指令,生成.o可重定位目标檔案

        連結:

gcc hello.c -o hello
//hello 為可執行檔案
           

調用連結器ld,将生成的可重定位檔案與相關庫檔案連結,生成可執行目标檔案

一般情況下,在終端中使用連結部分的指令即可滿足編譯過程

檢視報錯:

        在敲代碼的時候,難免出現各種各樣的錯誤,以上指令無法讓人檢視報錯,無法确定是文法問題還是邏輯問題,可在最後加入-Wall檢視報錯,即:

gcc hello.c -o hello -Wall
           

如圖:

GNU編譯器(gcc):Linux下最強大的編譯器

繼續閱讀