GCC命令選項 整理

2021-05-22 14:30:12 字數 2876 閱讀 9271

由於gcc命令選項太多,以下只列部分常用選項(按a->z排列):

-ansi     支援ansi/iso c的標準語法,取消gnu的語法擴充套件中與標準有衝突部分(但這一項並不能保證生成ansi相容**)

–b     machine 在有的時候,gcc編譯器編譯出來的目標**並不是在執行這個編譯動作的機器上執行而是另外一台機器,這種編譯叫做交叉編譯,用來執行最終目標**的得機器叫做目標機,machine就是用來指明目標機的型別的

-c       只編譯不鏈結

-dmacro   以字串「1」定義 macro 巨集。

-dmacro=defn   以字串「defn」定義 macro 巨集。

-e     只執行 c 預編譯器。

-fpic     使gcc生成位置無關的**,這適合安裝到乙個共享庫。

-g       把除錯資訊加入到可執行的檔案裡.

-ggdb     在可執行程式中包含gnu debugger(gdb)才能識別的大量除錯資訊

-idir     將dir目錄加入搜尋標頭檔案的目錄路徑。

–imacros file 同-include file 一樣。不過這個檔案在具體編譯的時候只有裡面定義的巨集才起作用,所以值用來在file檔案裡面定義巨集。

-include file   在編譯之前,把file包含進去,相當於在所有編譯的原始檔最前面加入了乙個#include 語句,這樣做更「省油」。

-llibrary   鏈結library庫

-ldir     將dir目錄加入搜尋庫的目錄路徑,在沒特別指明情況下,gcc將優先於靜態庫使用共享庫

-m486   針對 486 進行**優化。

-mcpu=type   針對不同的cpu使用相應的cpu命令,可選的type有i386,i486,pentium,i686.

-mieee-fp   使用ieee標準進行浮點數比較

-mm     輸出乙個make相容的相關列表

-mno-ieee-fp   不使用ieee標準進行浮點數的比較

-mrtd     強行將函式引數個數固定的函式用ret num返回,節省呼叫函式的一條指令

-msoft-float   輸出包含浮點庫呼叫的目標**

-mshort   把int型別作為16位處理,相當於short int

–nostartfiles   在連線的時候不把系統相關的啟動**連線進來。

–nostdlib   在連線的時候不把系統相關的啟動檔案和系統相關的庫連線進來。

–nostdinc   在搜尋include 的檔案路徑中去掉標準的c語言標頭檔案搜尋路徑,例如stdio.h檔案就是放在標準標頭檔案搜尋路徑下。

–nostdinc++   同上,只是去掉的是標準c++語言的標頭檔案搜尋路徑。

-o       產生的可執行檔案指定乙個檔名來代替 a.out

-o0     不進行優化處理。

-o       或者-o1 選項告訴 gcc 對源**進行基本優化

-o2     選項告訴 gcc 產生盡可能小和盡可能快的**,比o1更進一步

-o3     比 -o2 更進一步優化,包括 inline 函式。

-p 或者 -pg   告訴 gcc 編譯 時為 prof 命令建立剖析(profile)資訊

-pedantic   允許發出ansi/iso c標準所列出的所有警告

-pedantic-errors 允許發出ansi/iso c標準所列出的所有錯誤

-pipe     編譯器編譯時各個階段的資訊是儲存到臨時檔案的,如果你不想

用臨時檔案的話可以通過管道也行.這個命令選項就用上了.不過有些系統不支援.

-s       編譯選項告訴 gcc 在為 c **產生了組合語言檔案後停止編譯

-shared   生成共享目標檔案。通常用在建立共享庫時。

-static     鏈結靜態庫,即執行靜態鏈結預設情況下gcc只鏈結共享庫

-traditonal   支援kernighan & ritchie c語法(如用舊式語法定義函式)

-umacro   取消對 macro 巨集的定義。-v       顯示在編譯過程的每一步中用到的命令

-w       關閉所有警告

-wall     允許發出gcc能提供的所有有用的警告。也可以用-w來標記指定的警告

-werror   把所有警告轉換為錯誤,以在警告發生時中止編譯過程

–wno-import 禁止對巨集#import提出警告

-x none   用字尾識別,關閉語言識別.

********************程式副檔名介紹******************************==

原始程式碼的副檔名指出所用編寫程式所用的語言,以及相對應的處

理方法:

.c  c 原始程式         ;   預處理、編譯、彙編

.c  c++ 原始程式        ;   預處理、編譯、彙編

.cc   c++ 原始程式        ;   預處理、編譯、彙編

.cxx c++ 原始程式        ;   預處理、編譯、彙編

.m  objective-c 原始程式    ;   預處理、編譯、彙編

.i  已經過預處理之 c 原始程式  ;   編譯、彙編

.ii   已經過預處理之 c++ 原始程式 ;   編譯、彙編

.s  組合語言原始程式      ;   彙編

.s  組合語言原始程式      ;   預處理、彙編

.h  預處理檔案(標標頭檔案)    ;   (不常出現在指令行)

其他副檔名的檔案是由鏈結程式來處理,通常有:

.o  object file

.a  archive file

GCC 命令選項使用詳解

gcc 命令列詳解 1 gcc包含的c c 編譯器 gcc cc c g gcc和cc是一樣的,c 和g 是一樣的,一般c程式就用gcc編譯,c 程式就用g 編譯 2 gcc的基本用法 gcc test.c這樣將編譯出乙個名為a.out的程式 gcc test.c o test這樣將編譯出乙個名為t...

gcc命令與gdb命令常用選項

用法 gcc 選項 檔名 選項 學用命令 1 編譯.c生成可執行檔案 gcc o hello world hello world.c2 編譯.c檔案生成目錄檔案 gcc 0 hello world.o c hello world.c gcc o hello world hello world.o4 ...

GCC編譯選項

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