gcc常用引數解析 學習筆記

2021-06-01 19:50:24 字數 1053 閱讀 1285

gcc 常用引數解析

小生正在學習linux c,so將gcc常用引數總結一下,權當學習筆記,也希望對有用的菜鳥有幫助,有不對的地方希望指正。

第一階段:-o,-g,-c,-wall,-o

-o:此引數用來指定檔名,不用每次都a.out了。

-g:此引數作用是在可執行檔案中加入源**的資訊以供gdb除錯使用。 比如可執行檔案中第幾條機器指令對應源**的第幾行,但並不是把整個原始檔嵌入到可執行檔案中。

-c:只生成目標檔案,即 .o 檔案。

-wall:通常情況下gcc對一些不重要的警告是不提示的,而加上此引數gcc就會提示所有警告,不管嚴重還是不嚴重。編譯時加上-wall是個好習慣。

-o:編譯器優化,共四個級別。

第二階段:-e,-s,-i,-l,-l,-v

-e:只做預處理而不編譯。

-s:生成彙編**。

-i:告訴編譯器去那裡找標頭檔案。

-l:告訴編譯器去**找需要的庫檔案,注意,即使庫檔案就在當前目錄下,編譯器也不會去找的,所以必須加此引數,除非你的庫在預設的尋找目錄裡,預設目錄可以用gcc -print-search-dirs檢視。

-l:此引數後緊跟庫的名字告訴編譯器要鏈結的庫,例如 -ljpeg,即是告訴編譯器要鏈結的庫是libjpeg。

-v:可以看到詳細的編譯過程。

第三階段:-share,-static,-fpic

-share: 此選項將盡量使用動態庫,所以生成檔案比較小,但是需要系統由動態庫。

-static:此選項將禁止使用動態庫,所以,編譯出來的東西,一般都很大,也不需要什麼動態連線庫,就可以執行。

-fpic:-f後跟一些編譯選項,pic是其中一種,表示生成位置無關的**(這牽扯到鏈結時位址重定位的一些知識)。

第四階段:-m,-mm

-m:此選項可以自動分析目標檔案和原始檔的依賴關係。

-mm:和上面的那個一樣,但是它將忽略由#include造成的依賴關係。

tips: 其中編譯過程很容易記混,但這裡面有乙個規律:引數是esc ,而生成的檔案是iso。這樣就好記點了。

gcc常用引數

gcc的一些重要引數 1.i 指定標頭檔案搜尋路徑 i 表include 如 gcc c hello.c o hello.o i usr include 2.l 指定要連線的庫所在的目錄 l 指定要連線的庫的名字 如 gcc main.o l usr lib lqt o hello 3.d 定義巨集...

gcc常用引數

今晚看了些有關gcc的編譯選項的內容,記錄下來以備查用。1 gcc c 只編譯不鏈結,生成.o檔案。例如,gcc c hello.c,將由hello.c得到hello.o 2 gcc o直接得到可執行檔案,並且可以指定可執行檔的名稱。例如,gcc o hello hello.c,將由hello.c得...

gcc常用引數

o file 指定輸出檔名,在編譯為目標 時,這一選項不是必須的。如果file沒有指定,預設檔名是a.out.c 只編譯不鏈結 dfoo bar 在命令列定義預處理巨集foo,其值為bar idirname 將dirname加入到頭檔案的搜尋目錄列表中 ldirname 將dirname加入到庫檔案...