1. 程式人生 > >GCC編譯器

GCC編譯器

inux file lec 必須 十年 兩個 源程序 設計 文件中

GCC是GNU項目的編譯器,是GNU最具代表性的作品。GCC設計之初是專門用於C程序的編譯器,展開叫做GNU C Compiler。經過數十年的發展,如今的GCC現在已經支持編譯多種語言,像C、C++、Objective-C、JAVA、Fortran等等,是GNU Compiler Collection。當我們用gcc命令編譯的時候,它會根據文件的後綴名自動的選擇相應的編譯器。GCC種包含以下常見命令:

  • C編譯器:cc、gcc
  • C++編譯器:c++、g++
  • 源代碼預處理器:cpp

註意:1.cc是Unix下的編譯器,gcc是Linux下的編譯器。用Unix編寫的程序都用cc編譯,故其Makefile文件中的編譯命令為cc。Linux為了兼容Unix的命令,在linux下用cc其實並不是用的Unix下的編譯器,而是gcc編譯器的鏈接,故用gcc和cc都是一樣的。

2.g++和gcc兩個命令,當源文件後綴是.c,gcc按C語言來編譯,g++按c++程序編譯,當後綴是.cpp時,gcc和g++都將其作為c++程序編譯。除此之外,gcc不能鏈接C++程序的庫,故當鏈接時C++程序必須要用g++來鏈接。而用g++編譯的時候,實際上用的還是gcc編譯。

一、程序的編譯過程

當我們用編譯命令將一個源程序文件編寫成可執行文件的時候,實際上分為下面4步:

  • 預處理 將源文件中包含的頭文件插入進來,進行宏替換等等,最終生成預處理後的文件。
  • 編譯 將上一步生成的預處理後的文件,編譯生成匯編代碼。
  • 匯編 根據匯編代碼,調用as程序,將相應的匯編代碼生成機器代碼,即計算機能夠直接運行的二進制.o文件。
  • 鏈接 將多個.o文件和程序中用到的庫文件通過連接器進行連接,生成最終的可執行文件。

二、GCC編譯命令

假設源文件為test.c。

GCC編譯器