GCC引數介紹

2021-10-03 15:32:23 字數 2130 閱讀 1893

-x language filename

設定檔案所使用的語言,而不是以後綴識別語言

-x none filename

關掉上個選項的語言設定,使用檔案的字尾識別語言

-c對檔案進行預處理、編譯和彙編,生成obj檔案

gcc -c hello.c

-c

在預處理的時候,不刪除注釋資訊,一般用於分析程式

-s只進行預處理和編譯,生成彙編**

gcc -s hello.c

-e

只進行預處理,這個選項不生成檔案,可以使用重定向或者-o選項使其生成乙個檔案

gcc -e hello.c -o hello.i

-o

制定目標的名稱,預設為a.out

gcc -o hello hello.c

-ansi

關閉gnu c中與ansi c不相容的特性,啟用ansi c的專有特性

-include file

包含某個**,相當於在**中使用#include

gcc hello.c -include /usr/lib/hello.h

-imacros file

將file中的巨集加入到輸入檔案中

-dmarco

相當於#define macro

-dmarco=defn

相當於#define macro=defn

-umacro

相當於#undef macro

-idir

對於#include「filename",gcc/g++會先在當前目錄查詢標頭檔案,如果沒有找到則回到預設的頭檔案目錄找。如果使用了-idir選項,則會現在dir目查詢,再按常規的順序去找。

對於#include,使用-idir選項,gcc/g++會到dir目錄下查詢,然後再到系統預設的頭檔案目錄查詢。

-i-取消-idir選項

-idirafter dir

在-i選項指定的目錄裡面查詢失敗,則到這個目錄下查詢

-iprefix prefix、-iwithprefix dir

一般一起使用,在-i選項指定的目錄裡面查詢失敗,則到prefix+dir下查詢

-nostdinc

使編譯器不在系統預設的頭檔案目錄裡面找檔案,一般和-idir選項一起使用

-nostdin c++

規定不再g++指定的標準路徑中搜尋

-m生成檔案關聯的資訊

-mm生成檔案關聯資訊,但是忽略#include造成的依賴關係

-md同-m,同時將結果輸出到字尾為.d的檔案裡

-mmd

同-mm,同時將結果輸出到字尾為.d的檔案裡

-llibaray

制定編譯時候使用的庫

gcc -lpthread hello.c

gcc常用的庫有glibc,其中包含了c標準庫的實現。幾乎所有的c語言都要呼叫glibc,所以glibc是linux平台c程式執行的基礎。因此-lc是gcc的預設選項。除此以外,libm中包含了一下用於數學計算的函式,libpthread中包含了關於執行緒的函式。

-ldir

制定編譯的時候,搜尋庫的路徑。不然編譯器將只在標準庫的目錄下查詢。

-static

禁止使用動態鏈結庫,編譯出來的檔案一般很大

-share

盡量使用動態鏈結庫,編譯出來的檔案一般較小,但執行時依賴動態鏈結庫。

-traditional

試圖讓編譯器支援傳統的c語言特性

-o0、o1、-o2、o3

編譯器優化選項。-o0為不做任何優化,-o或-o1為預設優化,-o2進一步優化,-o3更進一步優化,包括inline函式。

-w不生成任何警告資訊

-wall

生成所有警告資訊

gcc可同時用來編譯c程式和c++程式。gcc命令只能編譯c++原始檔,而不能自動和c++程式使用的庫連線。因此,通常使用g++命令來完成c++程式的編譯和連線,該程式會自動呼叫gcc實現編譯。

gcc 編譯粗略介紹 l引數和 L引數

l引數就是用來指定程式要鏈結的庫,l引數緊接著就是庫名,那麼庫名跟真正的庫檔名有什麼關係呢?就拿數學庫來說,他的庫名是m,他的庫檔名是libm.so,很容易看出,把庫檔名的頭lib和尾.so去掉就是庫名了 好了現在我們知道怎麼得到庫名,當我們自已要用到乙個第三方提供的庫名字libtest.so,那麼...

gcc 引數詳解

gcc引數詳解 介紹 gcc and g 分別是gnu的c c 編譯器 gcc g 在執行編譯工作的時候,總共需要4步 1.預處理,生成.i的檔案 預處理器 cpp 2.將預處理後的檔案不轉換成組合語言,生成檔案.s 編譯器 egcs 3.有彙編變為目標 機器 生成.o的檔案 彙編器 as 4.連線...

gcc引數詳解

gcc and g 分別是gnu的c c 編譯器 gcc g 在執行編譯工作的時候,總共需要4步 1.預處理,生成.i的檔案 預處理器cpp 2.將預處理後的檔案不轉換成組合語言,生成檔案.s 編譯器egcs 3.有彙編變為目標 機器 生成.o的檔案 彙編器as 4.連線目標 生成可執行程式 鏈結器...