• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • GCC 手冊

    發表于:2007-05-26來源:作者:點擊數: 標簽:
    it's useful! GCC Section: GNU Tools (1) Updated: 2003/12/05 Index Return to Main Contents ------------------------------------------------------------------------ -------- NAME gcc,g++-GNU工程的C和C++編譯器(egcs-1.1.2) 總覽(SYNOPSIS) gcc[o
    it's useful!

    GCC

    Section: GNU Tools (1)

    Updated: 2003/12/05

    Index Return to Main Contents

    ------------------------------------------------------------------------
    --------



    NAME

    gclearcase/" target="_blank" >cc,g++-GNU工程的C和C++編譯器(egcs-1.1.2)

    總覽(SYNOPSIS)

    gcc[option|filename ]...

    g++[option|filename ]...

    警告(WARNING)

    本手冊頁內容摘自GNU C編譯器的完整文檔,僅限于解釋選項的含義.

    除非有人自愿維護,否則本手冊頁不再更新.如果發現手冊頁和軟件之間有所矛盾,請
    查對Info文件, Info文件是權威文檔.

    如果我們發覺本手冊頁的內容由于過時而導致明顯的混亂和抱怨時,我們就停止發布
    它.不可能有其他選擇,象更新Info文件同時更新man手冊,因為其他維護GNU CC的工
    作沒有留給我們時間做這個. GNU工程認為man手冊是過時產物,應該把時間用到別的
    地方.

    如果需要完整和最新的文檔,請查閱Info文件`gcc'或Using and Porting GNU CC (
    for version 2.0) (使用和移植GNU CC 2.0) 手冊.二者均來自Texinfo原文件 gcc
    texinfo.

    描述(DESCRIPTION)

    C和C++編譯器是集成的.他們都要用四個步驟中的一個或多個處理輸入文件: 預處理
    (preprocessing),編譯(compilation),匯編(assembly)和連接(linking).源文件后
    綴名標識源文件的 語言,但是對編譯器來說,后綴名控制著缺省設定:

    gcc

    認為預處理后的文件(.i)是C文件,并且設定C形式的連接.

    g++

    認為預處理后的文件(.i)是C++文件,并且設定C++形式的連接.

    源文件后綴名指出語言種類以及后期的操作:

    c C源程序;預處理,編譯,匯編

    C C++源程序;預處理,編譯,匯編

    cc C++源程序;預處理,編譯,匯編

    cxx C++源程序;預處理,編譯,匯編

    m Objective-C源程序;預處理,編譯,匯編

    i 預處理后的C文件;編譯,匯編

    ii 預處理后的C++文件;編譯,匯編

    s 匯編語言源程序;匯編

    S 匯編語言源程序;預處理,匯編

    h 預處理器文件;通常不出現在命令行上

    其他后綴名的文件被傳遞給連接器(linker).通常包括:

    o 目標文件(Object file)

    a 歸檔庫文件(Archive file)

    除非使用了-c, -S,或-E選項(或者編譯錯誤阻止了完整的過程),否則連接總是 最后
    的步驟.在連接階段中,所有對應于源程序的.o文件, -l庫文件,無法識別的文件名(
    包括指定的 .o目標文件和.a庫文件)按命令行中的順序傳遞給連接器.

    選項(OPTIONS)

    選項必須分立給出: `-dr'完全不同于`-d -r '.

    大多數`-f'和`-W'選項有兩個相反的格式: -fname和 -fno-name (或-Wname和-Wno
    -name).這里 只列舉不是默認選項的格式.

    下面是所有選項的摘要,按類型分組,解釋放在后面的章節中.

    總體選項(Overall Option)

    -c -S -E -o file -pipe -v -x language

    語言選項(Language Option)

    -ansi -fall-virtual -fcond-mismatch -fdollars-in-identifiers -fenum-int-
    equiv -fexternal-templates -fno-asm -fno-builtin -fhosted -fno-hosted -f
    freestanding -fno-freestanding -fno-strict-prototype -fsigned-bitfields
    -fsigned-char -fthis-is-variable -funsigned-bitfields -funsigned-char -f
    writable-strings -traditional -traditional-cpp -trigraphs

    警告選項(Warning Option)

    -fsyntax-only -pedantic -pedantic-errors -w -W -Wall -Waggregate-return
    -Wcast-align -Wcast-qual -Wchar-subscript -Wcomment -Wconversion -Wenum-
    clash -Werror -Wformat -Wid-clash-len -Wimplicit -Wimplicit-int -Wimplic
    it-function-declaration -Winline -Wlong-long -Wmain -Wmissing-prototypes
    -Wmissing-declarations -Wnested-externs -Wno-import -Wparentheses -Wpoi
    nter-arith -Wredundant-decls -Wreturn-type -Wshadow -Wstrict-prototypes
    -Wswitch -Wtemplate-debugging -Wtraditional -Wtrigraphs -Wuninitialized
    -Wunused -Wwrite-strings

    調試選項(Debugging Option)

    -a -dletters -fpretend-float -g -glevel -gcoff -gxcoff -gxcoff+ -gdwarf
    -gdwarf+ -gstabs -gstabs+ -ggdb -p -pg -save-temps -print-file-name=libr
    ary -print-libgcc-file-name -print-prog-name=program

    優化選項(Optimization Option)

    -fcaller-saves -fcse-follow-jumps -fcse-skip-blocks -fdelayed-branch -fe
    lide-constructors -fexpensive-optimizations -ffast-math -ffloat-store -f
    force-addr -fforce-mem -finline-functions -fkeep-inline-functions -fmemo
    ize-lookups -fno-default-inline -fno-defer-pop -fno-function-cse -fno-in
    line -fno-peephole -fomit-frame-pointer -frerun-cse-after-loop -fschedul
    e-insns -fschedule-insns2 -fstrength-reduce -fthread-jumps -funroll-all-
    loops -funroll-loops -O -O2 -O3

    預處理器選項(Preprocessor Option)

    -Aassertion -C -dD -dM -dN -Dmacro[=defn] -E -H -idirafter dir -include
    file -imacros file -iprefix file -iwithprefix dir -M -MD -MM -MMD -nostd
    inc -P -Umacro -undef

    匯編器選項(Assembler Option)

    -Wa,option

    連接器選項(Linker Option)

    -llibrary -nostartfiles -nostdlib -static -shared -symbolic -Xlinker opt
    ion -Wl,option -u symbol

    目錄選項(Directory Option)

    -Bprefix -Idir -I- -Ldir

    目標機選項(Target Option)

    -b machine -V version

    配置相關選項(Configuration Dependent Option)

    M680x0 選項

    -m68000 -m68020 -m68020-40 -m68030 -m68040 -m68881 -mbitfield -mc68000 -
    mc68020 -mfpa -mnobitfield -mrtd -mshort -msoft-float

    VAX選項

    -mg -mgnu -munix

    SPARC選項

    -mepilogue -mfpu -mhard-float -mno-fpu -mno-epilogue -msoft-float -mspar
    clite -mv8 -msupersparc -mcypress

    Convex選項

    -margcount -mc1 -mc2 -mnoargcount

    AMD29K選項

    -m29000 -m29050 -mbw -mdw -mkernel-registers -mlarge -mnbw -mnodw -msmal
    l -mstack-check -muser-registers

    M88K選項

    -m88000 -m88100 -m88110 -mbig-pic -mcheck-zero-division -mhandle-large-s
    hift -midentify-revision -mno-check-zero-division -mno-ocs-debug-info -m
    no-ocs-frame-position -mno-optimize-arg-area -mno-serialize-volatile -mn
    o-underscores -mocs-debug-info -mocs-frame-position -moptimize-arg-area
    -mserialize-volatile -mshort-data-num -msvr3 -msvr4 -mtrap-large-shift -
    muse-div-instruction -mversion-03.00 -mwarn-passed-structs

    RS6000選項

    -mfp-in-toc -mno-fop-in-toc

    RT選項

    -mcall-lib-mul -mfp-arg-in-fpregs -mfp-arg-in-gregs -mfull-fp-blocks -mh
    c-struct-return -min-line-mul -mminimum-fp-blocks -mnohc-struct-return

    MIPS選項

    -mcpu=cpu type -mips2 -mips3 -mint64 -mlong64 -mmips-as -mgas -mrnames -
    mno-rnames -mgpopt -mno-gpopt -mstats -mno-stats -mmemcpy -mno-memcpy -m
    no-mips-tfile -mmips-tfile -msoft-float -mhard-float -mabicalls -mno-abi
    calls -mhalf-pic -mno-half-pic -G num -nocpp

    i386選項

    -m486 -mno-486 -msoft-float -mno-fp-ret-in-387

    HPPA選項

    -mpa-risc-1-0 -mpa-risc-1-1 -mkernel -mshared-libs -mno-shared-libs -mlo
    ng-calls -mdisable-fpregs -mdisable-indexing -mtrailing-colon

    i960選項

    -mcpu-type -mnumerics -msoft-float -mleaf-procedures -mno-leaf-procedure
    s -mtail-call -mno-tail-call -mcomplex-addr -mno-complex-addr -mcode-ali
    gn -mno-code-align -mic-compat -mic2.0-compat -mic3.0-compat -masm-compa
    t -mintel-asm -mstrict-align -mno-strict-align -mold-align -mno-old-alig
    n

    DEC Alpha選項

    -mfp-regs -mno-fp-regs -mno-soft-float -msoft-float

    System V選項

    -G -Qy -Qn -YP,paths -Ym,dir

    代碼生成選項(Code Generation Option)

    -fcall-saved-reg -fcall-used-reg -ffixed-reg -finhibit-size-directive -f
    nonnull-objects -fno-common -fno-ident -fno-gnu-linker -fpcc-struct-retu
    rn -fpic -fPIC -freg-struct-return -fshared-data -fshort-enums -fshort-d
    ouble -fvolatile -fvolatile-global -fverbose-asm



    總體選項(Overall Option)

    -x language

    明確指出后面輸入文件的語言為language (而不是從文件名后綴得到的默認選擇).
    這個選項應用于后面 所有的輸入文件,直到遇著下一個`-x'選項. language的可選
    值有`c', `objective-c', `c-header', `c++', `cpp-output', `assembler',和`
    assembler-with-cpp'.

    -x none

    關閉任何對語種的明確說明,因此依據文件名后綴處理后面的文件(就象是從未使用
    過`-x'選項).

    如果只操作四個階段(預處理,編譯,匯編,連接)中的一部分,可以使用`-x'選項(或文
    件名后綴)告訴 gcc從哪里開始,用`-c', `-S',或`-E'選項告訴gcc到 哪里結束.注
    意,某些選項組合(例如, `-x cpp-output -E')使gcc不作任何事情.

    -c

    編譯或匯編源文件,但是不作連接.編譯器輸出對應于源文件的目標文件.

    缺省情況下, GCC通過用`.o'替換源文件名后綴`.c', `.i', `.s',等等,產生目標文
    件名.可以使用-o選項選擇其他名字.

    GCC忽略-c選項后面任何無法識別的輸入文件(他們不需要編譯或匯編).

    -S

    編譯后即停止,不進行匯編.對于每個輸入的非匯編語言文件,輸出文件是匯編語言文
    件.

    缺省情況下, GCC通過用`.o'替換源文件名后綴`.c', `.i',等等,產生 目標文件名
    可以使用-o選項選擇其他名字.

    GCC忽略任何不需要編譯的輸入文件.

    -E

    預處理后即停止,不進行編譯.預處理后的代碼送往標準輸出.

    GCC忽略任何不需要預處理的輸入文件.

    -o file

    指定輸出文件為file.該選項不在乎GCC產生什么輸出,無論是可執行文件,目標文件
    ,匯編文件還是 預處理后的C代碼.

    由于只能指定一個輸出文件,因此編譯多個輸入文件時,使用`-o'選項沒有意義,除非
    輸出一個可執行文件.

    如果沒有使用`-o'選項,默認的輸出結果是:可執行文件為`a.out', `source.suffi
    x '的目標文件是`source.o',匯編文件是 `source.s',而預處理后的C源代碼送往標
    準輸出.

    -v

    (在標準錯誤)顯示執行編譯階段的命令.同時顯示編譯器驅動程序,預處理器,編譯器
    的版本號.

    -pipe

    在編譯過程的不同階段間使用管道而非臨時文件進行通信.這個選項在某些系統上無
    法工作,因為那些系統的 匯編器不能從管道讀取數據. GNU的匯編器沒有這個問題.


    語言選項(LANGUAGE OPTIONS)

    下列選項控制編譯器能夠接受的C "方言":

    -ansi

    支持符合ANSI標準的C程序.

    這樣就會關閉GNU C中某些不兼容ANSI C的特性,例如asm, inline和 typeof關鍵字
    ,以及諸如unix和vax這些表明當前系統類型的預定義宏.同時開啟 不受歡迎和極少
    使用的ANSI trigraph特性,以及禁止`$'成為標識符的一部分.

    盡管使用了`-ansi'選項,下面這些可選的關鍵字, __asm__, __extension__, __in
    line__和__typeof__仍然有效.你當然不會把 他們用在ANSI C程序中,但可以把他們
    放在頭文件里,因為編譯包含這些頭文件的程序時,可能會指定 `-ansi'選項.另外一
    些預定義宏,如__unix__和__vax__,無論有沒有使用 `-ansi'選項,始終有效.

    使用`-ansi'選項不會自動拒絕編譯非ANSI程序,除非增加`-pedantic'選項作為 `-
    ansi'選項的補充.

    使用`-ansi'選項的時候,預處理器會預定義一個__STRICT_ANSI__宏.有些頭文件 關
    注此宏,以避免聲明某些函數,或者避免定義某些宏,這些函數和宏不被ANSI標準調用
    ;這樣就不會干擾在其他地方 使用這些名字的程序了.

    -fno-asm

    不把asm, inline或typeof當作關鍵字,因此這些詞可以用做標識符.用 __asm__, _
    _inline__和__typeof__能夠替代他們. `-ansi' 隱含聲明了`-fno-asm'.

    -fno-builtin

    不接受不是兩個下劃線開頭的內建函數(built-in function).目前受影響的函數有
    _exit, abort, abs, alloca, cos, exit, fabs, labs, memcmp, memcpy, sin, s
    qrt, strcmp, strcpy,和strlen.

    `-ansi'選項能夠阻止alloca和_exit成為內建函數.

    -fhosted

    按宿主環境編譯;他隱含聲明了`-fbuiltin'選項,而且警告不正確的main函數聲明.


    -ffreestanding

    按獨立環境編譯;他隱含聲明了`-fno-builtin'選項,而且對main函數沒有特別要求


    (譯注:宿主環境(hosted environment)下所有的標準庫可用, main函數返回一個in
    t值,典型例子是除了 內核以外幾乎所有的程序.對應的獨立環境(freestanding en
    vironment)不存在標準庫,程序入口也不一定是 main,最明顯的例子就是操作系統內
    核.詳情參考gcc網站最近的資料)

    -fno-strict-prototype

    對于沒有參數的函數聲明,例如`int foo ();',按C風格處理---即不說明參數個數或
    類型. (僅針對C++).正常情況下,這樣的函數foo在C++中意味著參數為空.

    -trigraphs

    支持ANSI C trigraphs. `-ansi'選項隱含聲明了`-trigraphs'.

    -traditional

    試圖支持傳統C編譯器的某些方面.詳見GNU C手冊,我們已經把細節清單從這里刪除
    ,這樣當內容過時后,人們也不會 埋怨我們.

    除了一件事:對于C++程序(不是C), `-traditional'選項帶來一個附加效應,允許對
    this賦值.他和`-fthis-is-variable'選項的效果一樣.

    -traditional-cpp

    試圖支持傳統C預處理器的某些方面.特別是上面提到有關預處理器的內容,但是不包
    括 `-traditional'選項的其他效應.

    -fdollars-in-identifiers

    允許在標識符(identifier)中使用`$'字符(僅針對C++).你可以指定 `-fno-dollar
    s-in-identifiers'選項顯明禁止使用`$'符. (GNU C++在某些 目標系統缺省允許`
    $'符,但不是所有系統.)

    -fenum-int-equiv

    允許int類型到枚舉類型(enumeration)的隱式轉換(僅限于C++).正常情況下GNU C+
    +允許從 enum到int的轉換,反之則不行.

    -fexternal-templates

    為模板聲明(template declaration)產生較小的代碼(僅限于C++),方法是對于每個
    模板函數 (template function),只在定義他們的地方生成一個副本.想要成功使用
    這個選項,你必須在所有使用模板的 文件中,標記`#pragma implementation' (定義
    )或`#pragma interface' (聲明).

    當程序用`-fexternal-templates'編譯時,模板實例(template instantiation) 全
    部是外部類型.你必須讓需要的實例在實現文件中出現.可以通過typedef實現這一點
    ,他引用所需的每個 實例.相對應的,如果編譯時使用缺省選項`-fno-external-tem
    plates',所有模板實例明確的設為內置.

    -fall-virtual

    所有可能的成員函數默認為虛函數.所有的成員函數(除了構造子函數和new或delet
    e 成員操作符)視為所在類的虛函數.

    這不表明每次調用成員函數都將通過內部虛函數表.有些情況下,編譯器能夠判斷出
    可以直接調用某個虛函數;這時就 直接調用.

    -fcond-mismatch

    允許條件表達式的第二和第三個參數的類型不匹配.這種表達式的值是void.

    -fthis-is-variable

    允許對this賦值(僅對C++).合并用戶自定義的自由存儲管理機制到C++后,使可賦值
    的 `this'顯得不合時宜.因此,默認情況下,類成員函數內部對this賦值是無效操作
    然而為了 向后兼容,你可以通過`-fthis-is-variable'選項使這種操作有效.

    -funsigned-char

    把char定義為無符號類型,如同unsigned char.

    各種機器都有自己缺省的char類型.既可能是unsigned char也可能是signed char


    理想情況下,當依賴于數據的符號性時,一個可移植程序總是應該使用signed char或
    unsigned char.但是許多程序已經寫成只用簡單的char,并且期待這是有符號數(或
    者無符號數,具體情況取決于 編寫程序的目標機器).這個選項,和它的反義選項,使
    那樣的程序工作在對應的默認值上.

    char的類型始終應該明確定義為signed char或unsigned char,即使 它表現的和其
    中之一完全一樣.

    -fsigned-char

    把char定義為有符號類型,如同signed char.

    這個選項等同于`-fno-unsigned-char',他是the negative form of `-funsigned-
    char'的相反選項.同樣, `-fno-signed-char'等價于 `-funsigned-char'.

    -fsigned-bitfields

    -funsigned-bitfields

    -fno-signed-bitfields

    -fno-unsigned-bitfields

    如果沒有明確聲明`signed'或`unsigned'修飾符,這些選項用來定義有符號位域 (b
    itfield)或無符號位域.缺省情況下,位域是有符號的,因為他們繼承的基本整數類型
    ,如int,是 有符號數.

    然而,如果指定了`-traditional'選項,位域永遠是無符號數.

    -fwritable-strings

    把字符串常量存儲到可寫數據段,而且不做特別對待.這是為了兼容一些老程序,他們
    假設字符串常量是可寫的. `-traditional'選項也有相同效果.

    篡改字符串常量是一個非常糟糕的想法; ``常量''就應該是常量.



    預處理器選項(Preprocessor Option)

    下列選項針對C預處理器,預處理器用在正式編譯以前,對C 源文件進行某種處理.

    如果指定了`-E'選項, GCC只進行預處理工作.下面的某些選項必須和`-E'選項一起
    才 有意義,因為他們的輸出結果不能用于編譯.

    -include file

    在處理常規輸入文件之前,首先處理文件file,其結果是,文件file的內容先得到編譯
    命令行上任何`-D'和`-U'選項永遠在`-include file'之前處理, 無論他們在命令
    行上的順序如何.然而`-include'和`-imacros'選項按書寫順序處理.

    -imacros file

    在處理常規輸入文件之前,首先處理文件file,但是忽略輸出結果.由于丟棄了文件f
    ile的 輸出內容, `-imacros file'選項的唯一效果就是使文件file中的宏定義生效
    , 可以用于其他輸入文件.在處理`-imacrosfile'選項之前,預處理器首先處理`-D'
    和`-U'選項,并不在乎他們在命令行上的順序.然而`-include'和 `-imacros'選項
    按書寫順序處理.

    -idirafter dir

    把目錄dir添加到第二包含路徑中.如果某個頭文件在主包含路徑(用`-I'添加的路徑
    )中沒有 找到,預處理器就搜索第二包含路徑.

    -iprefix prefix

    指定prefix作為后續`-iwithprefix'選項的前綴.

    -iwithprefix dir

    把目錄添加到第二包含路徑中.目錄名由prefix和dir合并而成,這里 prefix被先前
    的`-iprefix'選項指定.

    -nostdinc

    不要在標準系統目錄中尋找頭文件.只搜索`-I'選項指定的目錄(以及當前目錄,如果
    合適).

    結合使用`-nostdinc'和`-I-'選項,你可以把包含文件搜索限制在顯式指定的目錄.


    -nostdinc++

    不要在C++專用標準目錄中尋找頭文件,但是仍然搜索其他標準目錄. (當建立`libg
    ++'時使用 這個選項.)

    -undef

    不要預定義任何非標準宏. (包括系統結構標志).

    -E

    僅運行C預處理器.預處理所有指定的C源文件,結果送往標準輸出或指定的輸出文件


    -C

    告訴預處理器不要丟棄注釋.配合`-E'選項使用.

    -P

    告訴預處理器不要產生`#line'命令.配合`-E'選項使用.

    -M [ -MG ]

    告訴預處理器輸出一個適合make的規則,用于描述各目標文件的依賴關系.對于每個
    源文件,預處理器輸出 一個make規則,該規則的目標項(target)是源文件對應的目標
    文件名,依賴項(dependency)是源文件中 `#include引用的所有文件.生成的規則可
    以是單行,但如果太長,就用`\'-換行符續成多行.規則 顯示在標準輸出,不產生預處
    理過的C程序.

    `-M'隱含了`-E'選項.

    `-MG'要求把缺失的頭文件按存在對待,并且假定他們和源程序文件在同一目錄下.必
    須和 `-M'選項一起用.

    -MM [ -MG ]

    和`-M'選項類似,但是輸出結果僅涉及用戶頭文件,象這樣`#include file"'.忽略系
    統頭文件如`#include <file>'.

    -MD

    和`-M'選項類似,但是把依賴信息輸出在文件中,文件名通過把輸出文件名末尾的`.
    o'替換為 `.d'產生.同時繼續指定的編譯工作---`-MD'不象`-M'那樣阻止正常的編
    譯任務.

    Mach的實用工具`md'能夠合并`.d'文件,產生適用于`make'命令的單一的 依賴文件


    -MMD

    和`-MD'選項類似,但是輸出結果僅涉及用戶頭文件,忽略系統頭文件.

    -H

    除了其他普通的操作, GCC顯示引用過的頭文件名.

    -Aquestion(answer)

    如果預處理器做條件測試,如`#if #question(answer)',該選項可以斷言(Assert)
    question的答案是answer. -A-'關閉一般用于描述目標機的標準斷言.

    -Dmacro

    定義宏macro,宏的內容定義為字符串`1'.

    -Dmacro=defn

    定義宏macro的內容為defn.命令行上所有的`-D'選項在 `-U'選項之前處理.

    -Umacro

    取消宏macro. `-U'選項在所有的`-D'選項之后處理,但是優先于任何 `-include'或
    `-imacros'選項.

    -dM

    告訴預處理器輸出有效的宏定義列表(預處理結束時仍然有效的宏定義).該選項需結
    合`-E'選項使用.

    -dD

    告訴預處理器把所有的宏定義傳遞到輸出端,按照出現的順序顯示.

    -dN

    和`-dD'選項類似,但是忽略宏的參量或內容.只在輸出端顯示`#define name.



    匯編器選項(ASSEMBLER OPTION)

    -Wa,option

    把選項option傳遞給匯編器.如果option含有逗號,就在逗號處分割成多個選項.

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>