• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            chaosuper85

            C++博客 首頁 新隨筆 聯(lián)系 聚合 管理
              118 Posts :: 0 Stories :: 3 Comments :: 0 Trackbacks

            GCC 1

            Section: GNU Tools (1)
            Updated: 2003/12/05
            ÆäËûÁ¬½Ó: GNU ¹«¹²ÊÚȨ

            NAME

            gcc,g++-GNU工程的CC++編譯器(egcs-1.1.2)

            總覽(SYNOPSIS)

            gcc[option|filename ]...
            g++[option|filename ]...

            警告(WARNING)

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

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

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

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

            描述(DESCRIPTION)

            CC++編譯器是集成的.他們都要用四個步驟中的一個或多個處理輸入文件: 預(yù)處理(preprocessing),編譯(compilation),匯編(assembly)和連接(linking).源文件后綴名標(biāo)識源文件的 語言,但是對編譯器來說,后綴名控制著缺省設(shè)定:
            gcc
            認為預(yù)處理后的文件(.i)C文件,并且設(shè)定C形式的連接.
            g++
            認為預(yù)處理后的文件(.i)C++文件,并且設(shè)定C++形式的連接.

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

            .c      C源程序;預(yù)處理,編譯,匯編
            .C      C++源程序;預(yù)處理,編譯,匯編
            .cc     C++源程序;預(yù)處理,編譯,匯編
            .cxx    C++源程序;預(yù)處理,編譯,匯編
            .m      Objective-C源程序;預(yù)處理,編譯,匯編
            .i     預(yù)處理后的C文件;編譯,匯編
            .ii    預(yù)處理后的C++文件;編譯,匯編
            .s     匯編語言源程序;匯編
            .S     匯編語言源程序;預(yù)處理,匯編
            .h     預(yù)處理器文件;通常不出現(xiàn)在命令行上
            
            其他后綴名的文件被傳遞給連接器(linker).通常包括:

            .o     目標(biāo)文件(Object file)
            .a     歸檔庫文件(Archive file)
            

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

            選項(OPTIONS)

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

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

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

            總體選項(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 -ffreestanding -fno-freestanding -fno-strict-prototype -fsigned-bitfields -fsigned-char -fthis-is-variable -funsigned-bitfields -funsigned-char -fwritable-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 -Wimplicit-function-declaration -Winline -Wlong-long -Wmain -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wno-import -Wparentheses -Wpointer-arith -Wredundant-decls -Wreturn-type -Wshadow -Wstrict-prototypes -Wswitch -Wtemplate-debugging -Wtraditional -Wtrigraphs -Wuninitialized -Wunused -Wwrite-strings
            調(diào)試選項(Debugging Option)
            -a -dletters -fpretend-float -g -glevel -gcoff -gxcoff -gxcoff+ -gdwarf -gdwarf+ -gstabs -gstabs+ -ggdb -p -pg -save-temps -print-file-name=library -print-libgcc-file-name -print-prog-name=program
            優(yōu)化選項(Optimization Option)
            -fcaller-saves -fcse-follow-jumps -fcse-skip-blocks -fdelayed-branch -felide-constructors -fexpensive-optimizations -ffast-math -ffloat-store -fforce-addr -fforce-mem -finline-functions -fkeep-inline-functions -fmemoize-lookups -fno-default-inline -fno-defer-pop -fno-function-cse -fno-inline -fno-peephole -fomit-frame-pointer -frerun-cse-after-loop -fschedule-insns -fschedule-insns2 -fstrength-reduce -fthread-jumps -funroll-all-loops -funroll-loops -O -O2 -O3
            預(yù)處理器選項(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 -nostdinc -P -Umacro -undef
            匯編器選項(Assembler Option)
            -Wa,option
            連接器選項(Linker Option)
            -llibrary -nostartfiles -nostdlib -static -shared -symbolic -Xlinker option -Wl,option -u symbol
            目錄選項(Directory Option)
            -Bprefix -Idir -I- -Ldir
            目標(biāo)機選項(Target Option)
            -b machine -V version
            配置相關(guān)選項(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 -msparclite -mv8 -msupersparc -mcypress

            Convex選項
            -margcount -mc1 -mc2 -mnoargcount

            AMD29K選項
            -m29000 -m29050 -mbw -mdw -mkernel-registers -mlarge -mnbw -mnodw -msmall -mstack-check -muser-registers

            M88K選項
            -m88000 -m88100 -m88110 -mbig-pic -mcheck-zero-division -mhandle-large-shift -midentify-revision -mno-check-zero-division -mno-ocs-debug-info -mno-ocs-frame-position -mno-optimize-arg-area -mno-serialize-volatile -mno-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 -mhc-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 -mno-mips-tfile -mmips-tfile -msoft-float -mhard-float -mabicalls -mno-abicalls -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 -mlong-calls -mdisable-fpregs -mdisable-indexing -mtrailing-colon

            i960選項
            -mcpu-type -mnumerics -msoft-float -mleaf-procedures -mno-leaf-procedures -mtail-call -mno-tail-call -mcomplex-addr -mno-complex-addr -mcode-align -mno-code-align -mic-compat -mic2.0-compat -mic3.0-compat -masm-compat -mintel-asm -mstrict-align -mno-strict-align -mold-align -mno-old-align

            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 -fnonnull-objects -fno-common -fno-ident -fno-gnu-linker -fpcc-struct-return -fpic -fPIC -freg-struct-return -fshared-data -fshort-enums -fshort-double -fvolatile -fvolatile-global -fverbose-asm

             

            總體選項(Overall Option)

            -x language
            明確指出后面輸入文件的語言為language (而不是從文件名后綴得到的默認選擇).這個選項應(yīng)用于后面 所有的輸入文件,直到遇著下一個`-x'選項. language的可選值有`c', `objective-c', `c-header', `c++', `cpp-output', `assembler',`assembler-with-cpp'.
            -x none
            關(guān)閉任何對語種的明確說明,因此依據(jù)文件名后綴處理后面的文件(就象是從未使用過`-x'選項).

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

            -c
            編譯或匯編源文件,但是不作連接.編譯器輸出對應(yīng)于源文件的目標(biāo)文件.

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

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

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

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

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

            -E
            預(yù)處理后即停止,不進行編譯.預(yù)處理后的代碼送往標(biāo)準(zhǔn)輸出.

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

            -o file
            指定輸出文件為file.該選項不在乎GCC產(chǎn)生什么輸出,無論是可執(zhí)行文件,目標(biāo)文件,匯編文件還是 預(yù)處理后的C代碼.

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

            如果沒有使用`-o'選項,默認的輸出結(jié)果是:可執(zhí)行文件為`a.out', `source.suffix '的目標(biāo)文件是`source.o',匯編文件是 `source.s',而預(yù)處理后的C源代碼送往標(biāo)準(zhǔn)輸出.

            -v
            (在標(biāo)準(zhǔn)錯誤)顯示執(zhí)行編譯階段的命令.同時顯示編譯器驅(qū)動程序,預(yù)處理器,編譯器的版本號.
            -pipe
            在編譯過程的不同階段間使用管道而非臨時文件進行通信.這個選項在某些系統(tǒng)上無法工作,因為那些系統(tǒng)的 匯編器不能從管道讀取數(shù)據(jù). GNU的匯編器沒有這個問題.

            語言選項(LANGUAGE OPTIONS)

            下列選項控制編譯器能夠接受的C "方言":
            -ansi
            支持符合ANSI標(biāo)準(zhǔn)的C程序.

            這樣就會關(guān)閉GNU C中某些不兼容ANSI C的特性,例如asm, inlinetypeof關(guān)鍵字,以及諸如unixvax這些表明當(dāng)前系統(tǒng)類型的預(yù)定義宏.同時開啟 不受歡迎和極少使用的ANSI trigraph特性,以及禁止`$'成為標(biāo)識符的一部分.

            盡管使用了`-ansi'選項,下面這些可選的關(guān)鍵字, __asm__, __extension__, __inline____typeof__仍然有效.你當(dāng)然不會把 他們用在ANSI C程序中,但可以把他們放在頭文件里,因為編譯包含這些頭文件的程序時,可能會指定 `-ansi'選項.另外一些預(yù)定義宏,__unix____vax__,無論有沒有使用 `-ansi'選項,始終有效.

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

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

             

            -fno-asm
            不把asm, inlinetypeof當(dāng)作關(guān)鍵字,因此這些詞可以用做標(biāo)識符.__asm__, __inline____typeof__能夠替代他們. `-ansi' 隱含聲明了`-fno-asm'.
            -fno-builtin
            不接受不是兩個下劃線開頭的內(nèi)建函數(shù)(built-in function).目前受影響的函數(shù)有_exit, abort, abs, alloca, cos, exit, fabs, labs, memcmp, memcpy, sin, sqrt, strcmp, strcpy,strlen.

            `-ansi'選項能夠阻止alloca_exit成為內(nèi)建函數(shù).

             

            -fhosted
            按宿主環(huán)境編譯;他隱含聲明了`-fbuiltin'選項,而且警告不正確的main函數(shù)聲明.
            -ffreestanding
            按獨立環(huán)境編譯;他隱含聲明了`-fno-builtin'選項,而且對main函數(shù)沒有特別要求.

            (譯注:宿主環(huán)境(hosted environment)下所有的標(biāo)準(zhǔn)庫可用, main函數(shù)返回一個int,典型例子是除了 內(nèi)核以外幾乎所有的程序.對應(yīng)的獨立環(huán)境(freestanding environment)不存在標(biāo)準(zhǔn)庫,程序入口也不一定是 main,最明顯的例子就是操作系統(tǒng)內(nèi)核.詳情參考gcc網(wǎng)站最近的資料)

             

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

             

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

             

            -traditional
            試圖支持傳統(tǒng)C編譯器的某些方面.詳見GNU C手冊,我們已經(jīng)把細節(jié)清單從這里刪除,這樣當(dāng)內(nèi)容過時后,人們也不會 埋怨我們.

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

             

            -traditional-cpp
            試圖支持傳統(tǒng)C預(yù)處理器的某些方面.特別是上面提到有關(guān)預(yù)處理器的內(nèi)容,但是不包括 `-traditional'選項的其他效應(yīng).

             

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

             

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

             

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

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

             

            -fall-virtual
            所有可能的成員函數(shù)默認為虛函數(shù).所有的成員函數(shù)(除了構(gòu)造子函數(shù)和newdelete 成員操作符)視為所在類的虛函數(shù).

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

             

            -fcond-mismatch
            允許條件表達式的第二和第三個參數(shù)的類型不匹配.這種表達式的值是void.

             

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

             

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

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

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

            char的類型始終應(yīng)該明確定義為signed charunsigned char,即使 它表現(xiàn)的和其中之一完全一樣.

             

            -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'修飾符,這些選項用來定義有符號位域 (bitfield)或無符號位域.缺省情況下,位域是有符號的,因為他們繼承的基本整數(shù)類型,int,是 有符號數(shù).

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

             

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

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

            posted on 2009-08-03 14:30 chaosuper 閱讀(197) 評論(0)  編輯 收藏 引用

            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            久久亚洲国产精品123区| 国产成人无码精品久久久性色| 人妻精品久久久久中文字幕一冢本| 成人综合久久精品色婷婷| 亚洲欧美成人综合久久久| 久久国产一区二区| 伊人情人综合成人久久网小说 | 无夜精品久久久久久| 日本五月天婷久久网站| 伊人久久免费视频| 国产激情久久久久久熟女老人| 日韩亚洲欧美久久久www综合网| 天天做夜夜做久久做狠狠| 久久精品一本到99热免费| 久久天天躁狠狠躁夜夜2020老熟妇 | 国内精品久久久久影院免费 | 国产精品一久久香蕉产线看 | 一本一道久久精品综合| 亚洲国产成人精品91久久久| 99久久免费国产精品热| 久久久久亚洲精品日久生情| 久久九九全国免费| 久久久久99精品成人片欧美| 欧美日韩精品久久久免费观看| 久久精品成人免费网站| 一本久久a久久精品vr综合| 99久久久久| 九九久久精品国产| 精品一区二区久久久久久久网站| 中文字幕无码精品亚洲资源网久久| 久久久久久亚洲精品无码| 久久国产精品国产自线拍免费| 久久国产精品99精品国产987| 久久人人爽爽爽人久久久| 人妻丰满AV无码久久不卡| 99久久国产宗和精品1上映 | 7国产欧美日韩综合天堂中文久久久久 | 欧美成a人片免费看久久| 久久国产午夜精品一区二区三区| 国产免费久久精品99久久| 热RE99久久精品国产66热|