GCC是一個用於linux系統下編程的編譯器。對於linux嵌入式系統開發來講是一種最廣泛的工具。linux
gcc除了編譯程序的功能外,還含其餘相關工具。它能把易於使用的高級語言編寫的源代碼構建成能在編程
計算機直接執行的二進制代碼。在linux下最經常使用的是用於編譯程序。 工具
GCC支持的體系機構有40餘種,常見的有x86系列、ARM、Power PC等,同時還能運行在不一樣的操調試
做系統上,如Linux、Solaris、Windows等。 GCC除了支持C語言外,還支持多種其餘語言,如C++、開發
Ada、Java、Objective-C、FORTRAN、Pascal等。 編譯器
1.gcc使用語法:io
GCC 【option】【filename】··· 編譯
其中option爲gcc使用時的選項(參數),filename爲用gcc處理的文件名class
2.gcc所遵循的部分約定規則: test
.c爲後綴的文件,C語言源代碼文件;
.a爲後綴的文件,是由目標文件構成的檔案庫文件;
.C,.cc或.cxx 爲後綴的文件,是C++源代碼文件;
.h爲後綴的文件,是程序所包含的頭文件;
.i 爲後綴的文件,是已經預處理過的C源代碼文件;
.ii爲後綴的文件,是已經預處理過的C++源代碼文件;
.m爲後綴的文件,是Objective-C源代碼文件;
.o爲後綴的文件,是編譯後的目標文件;
.s爲後綴的文件,是彙編語言源代碼文件;
.S爲後綴的文件,是通過預編譯的彙編語言源代碼文件。
3.gcc編譯器的執行過程
使用gcc由C語言源代碼文件生成可執行文件的過程:預處理(也稱預編譯,Preprocessing)、編譯(Compilation)、彙編(Assembly)和連接(Linking)。
(1)預處理:完成源代碼中的宏和include展開工做 gcc -E test.c -o test.i
(2)編譯:把預處理後的結果編譯成彙編代碼 gcc -S test.i -o test.s
(3)彙編:把編譯的結果彙編成目標代碼模塊 gcc -c test.s -o test.o
(4)連接:把多個目標代碼模塊連接成生成一個大的目標模塊,獲得可執行文件 gcc test.o -o test
以上過程當中的test.c爲C源代碼,test爲可執行文件。
4.gcc經常使用的模式
GCC經常使用的兩種模式是:編譯模式和編譯連接模式。
(1)gcc -o test test.c 此過程爲由C源代碼(test.c)直接編譯生成可執行文件(test)
(2)gcc -c test.c 此時默認生成名爲test.o的目標文件
或本身指定輸出文件名稱即:gcc -c test.c -o mytest.o 此時生成的目標文件名爲mytest.o
此過程當中由源代碼(test.c)編譯生成的目標文件test.o或mytest.o雖然也是機器代碼可是不可執行。
(3)多個源文件生成一個目標文件時的gcc模式
gcc -o test first.c second.c third.c
5.gcc編譯器的經常使用選項
-x langage 標示源文件所用的語言
-x none 把上面的 -x langage都關掉
-c 把源文件編譯成目標代碼,不作鏈接
-S 把源文件編譯成彙編代碼,不作彙編和鏈接
-E 輸出預處理結果,不進行編譯、彙編、鏈接
-o file 指名輸出名爲file
-v 把整個編譯過程的輸出信息都打印出來
-C 同-E參數配合用,讓預處理結果把註釋保留,方便讀取
-g 把調試開關打開,讓編譯的目標文件有調試信息
-I dir 宏include須要搜尋的目錄dir
-L dir 搜尋庫文件(*.a)的路徑dir
-Wall 發出gcc能夠提供的全部有用的警告信息