GCC編譯器

GCC編譯器

       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能夠提供的全部有用的警告信息

相關文章
相關標籤/搜索