歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

GCC編譯器使用方法技巧總結

 

GCC的常識

 

1、 gcc的全稱: GNU C Compiler ,是GNU的一款編譯器

 

2、 gcc通過後綴名來區別輸入文件的類型;

 

常用文件類型:.

 

c              C語言源代碼文件

 

.C/.cc              C++源代碼文件

 

.h                      頭文件(head也即include)

 

.i                      已經預處理過的C源代碼文件  //預處理:完成頭文件和宏定義的展開

 

.ii                      已經預處理過的C++源代碼文件

 

.s                      匯編語言的源代碼

 

.S                      預編譯的匯編語言源代碼文件

 

.o                      編譯後的目標文件object

 

GCC基本用法

 

1、 gcc編譯程序分為四個階段產生可執行程序:

 

Pre-Processing                    預處理

 

gcc  -E  hello.c  -o  hello.i        //完成頭文件和宏定義的展開,生成hello.i預處理文件

 

Compiling                            編譯

 

gcc  -S  hello.i                        //生成匯編代碼,生成hello.s的匯編文件

 

Assembling                          匯編

 

gcc  -c  hello.s                        //生成二進制目標文件,生成hello.o文件

 

Linking                                    鏈接

 

gcc  hello.o  -o  hello              //鏈接相關庫,生成可執行文件hello,沒有後綴

 

注:一般生成可執行程序,可以直接 : gcc  hello.c  -o  hello

 

運行該可執行程序:      ./hello

 

2、使用方法:

 

gcc +要編譯的文件+-o+編譯後生成的文件名              注:-o也即是output_filename,是指定編譯後生成的文件名,

 

不是編譯選項,如果沒指定則默認生成a.out可執行文件

 

eg:  gcc  hello.c  -o  hello      //將hello.c編譯鏈接成可執行文件hello

 

gcc +[編譯選項]+要編譯的文件+-o+編譯後生成的文件名

 

常用選項:gcc  -c    hello.c                //-c只編譯,不鏈接成可執行文件,生成 hello.o 的目標文件

 

gcc  -O    hello.c              //-O對程序進行優化,使生成的可執行文件執行效率提高

 

gcc  -O2  hello.c              //-O2比-O更好的優化,是生成的可執行文件效率更高

 

執行方法:        ./hello          //執行當前目錄下的可執行文件,./表示當前目錄,要執行其他目錄的可執行文件,輸入該文件的路徑即可

 

測試執行速度:time ./hello              //可以測試優化後的可執行文件的執行速度     

 

Ubuntu 12.04嵌入式交叉編譯環境arm-linux-GCC搭建過程圖解 http://www.linuxidc.com/Linux/2013-06/85902.htm

Ubuntu 12.10安裝交叉編譯器arm-none-linux-gnueabi-GCC http://www.linuxidc.com/Linux/2013-03/82016.htm

Ubuntu下Vim+GCC+GDB安裝及使用 http://www.linuxidc.com/Linux/2013-01/78159.htm

Ubuntu下兩個GCC版本切換 http://www.linuxidc.com/Linux/2012-10/72284.htm

GCC 的詳細介紹:請點這裡
GCC 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved