Linux中的GDB調試學習(-)

GCC 是 GNU 編譯器集合(GNU Compiler Collection)的首字母縮寫詞。它可以編譯 C,C++,Objective-C,Fortran,Java 和 Ada 語言。

GCC是Linux平臺下最重要的開發工具,它是GNU的C和C++編譯器,其基本用法爲:

gcc [options] [filenames]

options爲編譯選項,GCC總共提供的編譯選項超過100個,但只有少數幾個會被頻繁使用,我們僅對幾個常用選項進行介紹。

     提示:編譯選項是區分大小寫的,一定要注意

假設我們編譯一輸出“Hello World”的程序:

/* Filename:helloworld.c */
# include < stdio. h>

int main( )
{
int i= 0;
printf ( "helloword!/n" ) ;
return 0;
}

 

最簡單的編譯方法是不指定任何編譯選項:

gcc helloworld.c

它會爲目標程序生成默認的文件名a.out,我們可用
-o 編譯選項來爲將產生的可執行文件指定一個文件名來代替a.out。例如,將上述名爲helloworld.c的C程序編譯爲名叫helloworld的可執行文件,需要輸入如下命令:

gcc –o helloworld helloworld.c


-Wall 開啓編譯器幾乎所有常用的警告──強烈建議你始終使用該選項

-c 選項告訴GCC僅把源代碼編譯爲目標代碼而跳過彙編和連接的步驟;只編譯,不連接成可執行文件,編譯器只是由輸入的.c爲後綴的源代碼文件生成.o爲後綴的目標文件,通常用於編譯不包含主程序的子程序文件。

-o : output_filename,確定輸出文件的名稱爲 output_filename,同時這個名稱不能和源文件同名,如果不給出這個選項,GCC就給出預設的可執行文件a.out.


-S (大寫)編譯選項告訴GCC 在爲 C代碼產生了彙編語言文件後停止編譯。GCC 產生的彙編語言文件的缺省擴展名是.s,上述程序運行如下命令:

gcc –S helloworld.c

將生成helloworld.c的彙編代碼,使用的是AT&T彙編。

-E 選項指示編譯器僅對輸入文件進行預處理 。當這個選項被使用時,預處理器的輸出被送到標準輸出(默認爲屏幕)而不是儲存在文件裏。生成的是.i文件,讓gcc在 預處理生停止編譯。

 -O (大寫 ): 選項告訴GCC對源代碼進行基本優化從而使得程序執行地更快;而-O2選項告訴GCC產生儘可能小和儘可能快的代碼。使用-O2選項編譯的速度比使用-O時慢,但產生的代碼執行速度會更快。採用這個選項,整個源代碼會在編譯,連接過程中進行優化處理,這樣產生的可執行文件的執行效率可以提高,但是編譯。連接的速度就相應地要慢一些。

-g :選項告訴GCC產生能被GNU調試器使用的調試信息以便調試你的程序,可喜的是,在GCC裏,我們能聯用-g和-O (產生優化代碼)。要想對源代碼進行調試,就必須加入這個選項。

-pg 選項告訴GCC在你的程序里加入額外的代碼,執行時,產生gprof用的剖析信息以顯示你的程序的耗時情況。

 

g++ :是用來編譯C++程序的。該編譯器能夠讀取並編譯任何C++程序。用g++ -c *.cpp.


   要運行該程序,輸入可執行文件的路徑如下:
          代碼:

           $ ./hello
helloword!


這將可執行文件載入內存,並使 CPU 開始執行其包含的指令。

          路徑 ./ 指代當前目錄,

          因此 ./hello 載入並執行當前目錄下的可執行文件 ‘hello’。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章