GCC參數(shù)中文手冊15p_第1頁
GCC參數(shù)中文手冊15p_第2頁
GCC參數(shù)中文手冊15p_第3頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、總覽(SYNOPSIS)gccopti on| file name . g+opti on| file name .警告(WARNING)本手冊頁內(nèi)容摘自GNU C編譯器的完整文檔,僅限于解釋選項的含義.除非有人自愿維護,否則本手冊頁不再更新.如果發(fā)現(xiàn)手冊頁和軟件之間有所矛盾,請查對Info文件,1 nfo文件是權(quán)威文檔.如果我們發(fā)覺本手冊頁的內(nèi)容由于過時而導(dǎo)致明顯的混亂和抱怨時,我們就停止發(fā)布它.不可能有其他選擇,象更新Info文件同時更新 man手冊,因為其他維護 GNU CC的工作沒有留給我們時間做這個 .GNU工程認(rèn)為 man手冊是過時產(chǎn)物,應(yīng)該把時間用到別的地方.如果需要完整和最新的

2、文檔,請查閱Info文件'gcc'或Using and Porting GNU CC (for version 2.0)(使用和移植GNU CC 2.0)手冊.二者均來自 Texinfo 原文件 gcc.texinfo.描述(DESCRIPTION)C和C+編譯器是集成的.他們都要用四個步驟中的一個或多個處理輸入文件:預(yù)處理(preprocessing),編譯(compilation),匯編(assembly)和連接(linking).源文件后綴名標(biāo)識源文件的語言 ,但是對編譯器來說,后綴名控制 著缺省設(shè)定:gcc認(rèn)為預(yù)處理后的文件(.i)是C文件,并且設(shè)定C形式的連接.g+認(rèn)

3、為預(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 f

4、ile)除非使用了 -c,-S或-E選項(或者編譯錯誤阻止了完整的過程),否則連接總是 最后的步驟.在連接階段中,所有對應(yīng)于源程序的.o文件,-l庫文件,無法識別的文件名(包括指定的.o目標(biāo)文件和.a庫文件)按命令行中的順序 傳遞給連接器.選項(OPTIONS) 選項必須分立給出:'-dr'完全不同于'-d -r '.大多數(shù)'-f和'-W選項有兩個相反的格式:-fname和-fno-name (或-Wname和-Wno-name).這里 只列舉不是默認(rèn)選項的格式.下面是所有選項的摘要,按類型分組,解釋放在后面的章節(jié)中.總體選項(Overall O

5、ption)-c -S -E -o file -pipe -v -x Ian guage語言選項(Language Option)-ansi -fall-virtual -fcon d-mismatch -fdollars-i n-ide ntifiers -fenu m-i nt-equiv -fexternal-templates -fno-asm -fno-built in -fhosted -fno-hosted -ffreesta nding -fno-freesta nding -fno-strict-prototype -fsig ned-bitfields -fsigned-c

6、har -fthis-is-variable -funsigned-bitfields -funsigned-char -fwritable-strings -traditional -traditional-cpp -trigraphs警告選項(Warning Option)-fsyn tax- only -peda ntic -peda ntic-errors -w -W -Wall -Waggregate-return -Wcast-alig n -Wcast-qual -Wchar-subscript -Wcomme nt -Wconversion -Wenu m-clash -Wer

7、ror -Wformat -Wid-clash-le n -Wimplicit -Wimplicit-i nt-Wimplicit-fu nctio n-declarati on-Win li ne -Wlon g-l ong -Wmai n -Wmiss in g-prototypes-Wmissi ng-declarati ons -Wnested-externs -Wno-import -Wpare ntheses -Wpoi nter-arith -Wred undan t-decls -Wreturn-type -Wshadow -Wstrict-prototypes -Wswitc

8、h -Wtemplate-debugging -Wtraditional -Wtrigraphs -Wunin itialized -Wunu sed -Wwrite-stri ngs調(diào)試選項(Debugging Option)-a -dletters -fpretend-float -g -glevel -gcoff -gxcoff -gxcoff+ -gdwarf -gdwarf+ -gstabs -gstabs+ -ggdb -p -pg -save-temps -pri nt-file-name=library -pri nt-libgcc-file-name -pri nt-prog

9、-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-i nli ne-fno-defer-po

10、p -fno-fu nctio n-cse-fno-i nli ne-fno-peephole -fomit-frame-poi nter-frerun-cse-after-loop -fschedule-i nsns -fschedule-i nsns2 -fstre ngth-reduce -fthread-jumps -fun roll-all-loops -fun roll-loops -O -O2 -O3預(yù)處理器選項(Preprocessor Option)-Aassertion -C -dD -dM -dN -Dmacro=defn -E -H -idirafter dir -in

11、clude file -imacros file -iprefix file -iwithprefix dir-M -MD -MM -MMD -no stdi nc -P -Umacro -un def匯編器選項(Assembler Option)-Wa,opti on連接器選項(Linker Option)-llibrary -no startfiles -no stdlib -static -shared -symbolic -Xli nker opti on -Wl,opti on -u symbol目錄選項(Directory Option)-Bprefix -Idir -I- -Ld

12、ir目標(biāo)機選項(Target Option)-b mach ine -V version配置相關(guān)選項(Configuration Dependent Option)M680x0選項-m68000 -m68020 -m68020-40 -m68030 -m68040 -m68881 -mbitfield -mc68000 -mc68020 -mfpa -mnobitfield -mrtd -mshort -msoft-floatVAX選項-mg -mg nu -mun ixSPARC選項-mepilogue -mfpu -mhard-float -mno-fpu -mno-epilogue -m

13、soft-float -msparclite -mv8 -msupersparc -mcypressConvex選項-margco unt -mc1 -mc2 -mno argco untAMD29K選項-m29000 -m29050 -mbw -mdw -mker nel-registers-mlarge -mnbw -mnodw -msmall -mstack-check-muser-registersM88K選項-m88000 -m88100 -m88110 -mbig-pic -mcheck-zero-divisi on -mha ndle-large-shift -mide ntif

14、y-revisi on -mno-check-zero-divisi on-mno-ocs-debug-i nfo-mno-ocs-frame-positi on-mno-optimize-arg-area-mno-serialize-volatile -mno-un derscores -mocs-debug-i nfo -mocs-frame-positi on-moptimize-arg-area-mserialize-volatile -mshort-data-num -msvr3 -msvr4 -mtrap-large-shift -muse-div-instruction -mve

15、rsion-03.00 -mwar n-passed-structsRS6000選項-mfp-i n-toc -mno- fop-i n-tocRT選項-mcall-lib-mul-mfp-arg-i n-fpregs-mfp-arg-i n-gregs-mfull-fp-blocks -mhc-struct-return -mi n-li ne-mul-mmi nimu m-fp-blocks -mn ohc-struct-returnMIPS選項-mcpu=cpu type -mips2 -mips3 -min t64 -mlon g64 -mmips-as -mgas -mrnames

16、-mno-rn ames -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 -no cppi386選項-m486 -mno-486 -msoft-float -mn o-fp-ret-i n-387HPPA選項-mpa-risc-1-0 -mpa-risc-1-1 -mkernel -mshared-lib

17、s-mno-shared-libs-mlon g-calls-mdisable-fpregs-mdisable-i ndex ing -mtraili ng-co Ioni960選項-mcpu-type -mnu merics -msoft-float -mleaf-procedures -mno-leaf-procedures -mtail-call -mno-tail-call -mcomplex-addr -mno-complex-addr -mcode-alig n -mno-code-alig n -mic-compat -mic2.0-compat -mic3.0-compat -

18、masm-compat -mintel-asm -mstrict-align -mno-strict-align -mold-align -mno-old-alignDEC Alpha 選項-mfp-regs -mn o-fp-regs -mno-soft-float -msoft-floatSystem V 選項-G -Qy -Qn -YPpaths -Ym,dir代碼生成選項(Code Gen eration Optio n)-fcall-saved-reg -fcall-used-reg -ffixed-reg -fin hibit-size-directive -fnonnu ll-o

19、bjects -fno-com mon -fno-ide nt -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 Ian guage明確指出后面輸入文件的語言為Ian guage (而不是從文件名后綴得到的默認(rèn)選擇)這個選項應(yīng)用于后面 所有的輸入文件,直到遇著下一個 '-x 選項.la n

20、guage 的可選值有 'c', 'objective-c', 'c-header', 'c+', 'cpp-output', 'assembler',禾 和 'assembler-with-cpp'.-x none關(guān)閉任何對語種的明確說明,因此依據(jù)文件名后綴處理后面的文件(就象是從未使用過'-x'選項).如果只操作四個階段(預(yù)處理,編譯,匯編,連接)中的一部分,可以使用'-x'選項(或文件名后綴)告訴gcc從哪里開 始,用'-c',

21、'-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編譯后即停止,不進行匯編.對于每個輸入的非匯編語言文件,輸出文件是匯編語言文件.缺省情

22、況下,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í)行文件.分享一個蘋果,各得一個蘋果,分享一種思想,各得兩種思想

23、。分享是件快樂的事件,樂于分享的人,事業(yè)更容易成功。如果沒有使用'-o'選項,默認(rèn)的輸出結(jié)果是:可執(zhí)行文件為'a.out', 'source.suffix '的目標(biāo)文件是'source.。',匯編文 件是'source.s',而預(yù)處理后的C源代碼送往標(biāo)準(zhǔn)輸出.-v(在標(biāo)準(zhǔn)錯誤)顯示執(zhí)行編譯階段的命令.同時顯示編譯器驅(qū)動程序,預(yù)處理器,編譯器的版本號.-pipe在編譯過程的不同階段間使用管道而非臨時文件進行通信.這個選項在某些系統(tǒng)上無法工作,因為那些系統(tǒng)的 匯編器不能從管道讀取數(shù)據(jù).GNU的匯編器沒有這個問題.語言選

24、項(LANGUAGE OPTIONS)下列選項控制編譯器能夠接受的C "方言":-an si支持符合ANSI標(biāo)準(zhǔn)的C程序.這樣就會關(guān)閉 GNU C中某些不兼容 ANSI C的特性,例如asm, inline和typeof關(guān)鍵字,以及諸如unix和vax這 些表明當(dāng)前系統(tǒng)類型的預(yù)定義宏 .同時開啟 不受歡迎和極少使用的 ANSI trigraph特性,以及禁止'$'成為標(biāo)識 符的一部分.盡管使用了 '-ansi'選項,下面這些可選的關(guān)鍵字 ,_asm_, _extension_, _inline_和_typeof_仍然有效你 當(dāng)然不會把他們用在

25、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)用;這樣就

26、不會干擾在其他地方使用這些名字的程序了.-fno-asm不把asm, inline或typeof當(dāng)作關(guān)鍵字,因此這些詞可以用做標(biāo)識符.用 _asm_, _inline_和_typeof_能夠替代他們.'-ansi'隱含聲明了 '-fno-asm'.-fno-built in不接受不是兩個下劃線開頭的內(nèi)建函數(shù)(built-in function).目前受影響的函數(shù)有 _exit, abort, abs, alloca, cos,exit, fabs, labs, memcmp, memcpy, sin, sqrt, strcmp, strcpy,禾口 strlen

27、.'-ansi'選項能夠阻止alloca和_exit成為內(nèi)建函數(shù).-fhosted按宿主環(huán)境編譯;他隱含聲明了 '-fbuiltin'選項,而且警告不正確的main函數(shù)聲明.-ffreesta nding按獨立環(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

28、,最明顯的例子就是操作系統(tǒng)內(nèi)核.詳情參考gcc網(wǎng)站最近的資料)-fno-strict-prototype對于沒有參數(shù)的函數(shù)聲明例如'int foo ();',按C風(fēng)格處理-即不說明參數(shù)個數(shù)或類型.似針對C+)正常情況下,這樣的函數(shù)foo在C+中意味著參數(shù)為空.-trigraphs支持 ANSI C trigraphs. '-ansi選項隱含聲明了 '-trigraphs'.-traditi onal試圖支持傳統(tǒng)C編譯器的某些方面詳見GNU C手冊,我們已經(jīng)把細節(jié)清單從這里刪除,這樣當(dāng)內(nèi)容過時后,人 們也不會埋怨我們.除了一件事:對于C+程序(不是C),

29、'-traditional'選項帶來一個附加效應(yīng),允許對this賦值他和'-fthis-is-variable' 選項的效果一樣-traditi on al-cpp試圖支持傳統(tǒng) C預(yù)處理器的某些方面特別是上面提到有關(guān)預(yù)處理器的內(nèi)容,但是不包括'-traditi on al'選項的 其他效應(yīng).-fdollars-i n-ide ntifiers允許在標(biāo)識符(identifier)中使用'$'字符(僅針對 C+)你可以指定'-fno-dollars-in-identifiers'選項顯明禁止使用'$'符

30、 (GNU C+在某些 目標(biāo)系統(tǒng)缺省允許'$'符,但不是所有系統(tǒng).)-fenu m-i nt-equiv允許int類型到枚舉類型(enumeration)的隱式轉(zhuǎn)換(僅限于C+)正常情況下 GNU C+允許從 enum到int的轉(zhuǎn) 換,反之則不行-fexternal-templates為模板聲明(template declaration)產(chǎn)生較小的代碼(僅限于C+)方法是對于每個模板函數(shù)(template function),只在定義他們的地方生成一個副本想要成功使用這個選項,你必須在所有使用模板的文件中,標(biāo)記'#pragmaimpleme ntati on'(

31、 定義)或 '#pragma in terface'(聲明 ).當(dāng)程序用'-fexternal-templates'編譯時,模板實例(template instantiation) 全部是外部類型.你必須讓需要的實例 在實現(xiàn)文件中出現(xiàn).可以通過typedef實現(xiàn)這一點,他引用所需的每個實例.相對應(yīng)的,如果編譯時使用缺省選項 '-fno-external-templates',所有模板實例明確的設(shè)為內(nèi)置-fall-virtual所有可能的成員函數(shù)默認(rèn)為虛函數(shù).所有的成員函數(shù)(除了構(gòu)造子函數(shù)和new或delete成員操作符)視為所在類的虛函數(shù).這不表

32、明每次調(diào)用成員函數(shù)都將通過內(nèi)部虛函數(shù)表.有些情況下,編譯器能夠判斷出可以直接調(diào)用某個虛函數(shù);這時就直接調(diào)用.-fcon d-mismatch允許條件表達式的第二和第三個參數(shù)的類型不匹配.這種表達式的值是void.-fthis-is-variable允許對this賦值(僅對C+).合并用戶自定義的自由存儲管理機制到C+后,使可賦值的'this'顯得不合時宜.因此,默認(rèn)情況下,類成員函數(shù)內(nèi)部對 this賦值是無效操作.然而為了向后兼容,你可以通過'-fthis-is-variable'選項 使這種操作有效.-fun sig ned-char把char定義為無符號類型

33、,如同unsigned char.各種機器都有自己缺省的char類型.既可能是unsigned char也可能是signed char .理想情況下,當(dāng)依賴于數(shù)據(jù)的符號性時,一個可移植程序總是應(yīng)該使用signed char或unsigned char.但是許多程序已經(jīng)寫成只用簡單的char,并且期待這是有符號數(shù)(或者無符號數(shù),具體情況取決于編寫程序的目標(biāo)機器)這個選項,和它的反義選項,使那樣的程序工作在對應(yīng)的默認(rèn)值上char的類型始終應(yīng)該明確定義為signed char或unsigned char,即使 它表現(xiàn)的和其中之一完全一樣-fsig ned-char 把char定義為有符號類型,如同s

34、igned char.這 個選項 等同于 '-fno-unsigned-char',他是 the negative form of '-funsigned-char'的相反選項.同樣, '-fno-signed-char'等價于 '-funsigned-char'.-fsig ned-bitfields-fun sig ned-bitfields -fno-sig ned-bitfields -fno-un sig ned-bitfields如果沒有明確聲明'signed'或'unsigned'修飾

35、符,這些選項用來定義有符號位域(bitfield)或無符號位域.缺省情況下,位域是有符號的,因為他們繼承的基本整數(shù)類型,如int,是有符號數(shù).然而,如果指定了 '-traditional'選項,位域永遠是無符號數(shù).-fwritable-stri ngs把字符串常量存儲到可寫數(shù)據(jù)段,而且不做特別對待.這是為了兼容一些老程序,他們假設(shè)字符串常量是可寫的.'-traditional'選項也有相同效果.篡改字符串常量是一個非常糟糕的想法; ''常量“就應(yīng)該是常量.預(yù)處理器選項(Preprocessor Option)下列選項針對C預(yù)處理器,預(yù)處理器用在正

36、式編譯以前,對C源文件進行某種處理.如果指定了 '-E'選項,GCC只進行預(yù)處理工作.下面的某些選項必須和'-E'選項一起才有意義,因為他們的輸出 結(jié)果不能用于編譯.-in clude file在處理常規(guī)輸入文件之前,首先處理文件file,其結(jié)果是,文件file的內(nèi)容先得到編譯.命令行上任何'-D'和'-U'選項永遠在'-include file'之前處理,無論他們在命令行上的順序如何.然而'-include'和'-imacros'選項按書寫順序處理.-imacros file在處理

37、常規(guī)輸入文件之前,首先處理文件file,但是忽略輸出結(jié)果.由于丟棄了文件file的 輸出內(nèi)容,'-imacros file'選項的唯一效果就是使文件file中的宏定義生效,可以用于其他輸入文件.在處理'-imacrosfile'選項之前,預(yù)處理器首先處理'-D'和'-U'選項拼不在乎他們在命令行上的順序.然而'-include'和'-imacros'選項按書寫順序處理.-idirafter dir把目錄dir添加到第二包含路徑中.如果某個頭文件在主包含路徑(用'-I'添加的路徑)中沒

38、有 找到,預(yù)處理器就搜索第二包含路徑.-iprefix prefix 指定prefix作為后續(xù)'-iwithprefix'選項的前綴.-iwithprefix dir把目錄添加到第二包含路徑中目錄名由prefix和dir合并而成,這里prefix被先前的'-iprefix'選項指定.-no stdi nc不要在標(biāo)準(zhǔn)系統(tǒng)目錄中尋找頭文件只搜索'-I'選項指定的目錄(以及當(dāng)前目錄,如果合適).結(jié)合使用'-nostdinc'和'-I-'選項,你可以把包含文件搜索限制在顯式指定的目錄-no stdi nc+不要在C+專用標(biāo)

39、準(zhǔn)目錄中尋找頭文件,但是仍然搜索其他標(biāo)準(zhǔn)目錄(當(dāng)建立'libg+'時使用 這個選項.)-un def不要預(yù)定義任何非標(biāo)準(zhǔn)宏(包括系統(tǒng)結(jié)構(gòu)標(biāo)志).-E僅運行C預(yù)處理器預(yù)處理所有指定的 C源文件,結(jié)果送往標(biāo)準(zhǔn)輸出或指定的輸出文件-C告訴預(yù)處理器不要丟棄注釋配合'-E'選項使用-P告訴預(yù)處理器不要產(chǎn)生'#line'命令配合'-E'選項使用-M -MG 告訴預(yù)處理器輸出一個適合make的規(guī)則,用于描述各目標(biāo)文件的依賴關(guān)系對于每個源文件,預(yù)處理器輸出一個make規(guī)則,該規(guī)則的目標(biāo)項(target)是源文件對應(yīng)的目標(biāo)文件名,依賴項(depen

40、dency)是源文件中'#include引用的所有文件生成的規(guī)則可以是單行,但如果太長,就用''-換行符續(xù)成多行規(guī)則 顯示在標(biāo)準(zhǔn)輸出,不產(chǎn)生 預(yù)處理過的C程序'-M'隱含了 '-E選項'-MG'要求把缺失的頭文件按存在對待,并且假定他們和源程序文件在同一目錄下必須和'-M'選項一起用-MM -MG 和'-M'選項類似,但是輸出結(jié)果僅涉及用戶頭文件,象這樣'#include file"'.忽略系統(tǒng)頭文件如'#include <file>'.-MD和

41、'-M'選項類似,但是把依賴信息輸出在文件中,文件名通過把輸出文件名末尾的'.o'替換為'.d'產(chǎn)生同時繼續(xù)指定的編譯工作-'-MD'不象'-M'那樣阻止正常的編譯任務(wù)Mach的實用工具'md'能夠合并'.d'文件,產(chǎn)生適用于'make'命令的單一的依賴文件-MMD和'-MD'選項類似,但是輸出結(jié)果僅涉及用戶頭文件,忽略系統(tǒng)頭文件-H除了其他普通的操作,GCC顯示引用過的頭文件名-Aquesti on(an swer)如果預(yù)處理器做條件測試,如'

42、;#if #question(answer)',該選項可以斷言(Assert) question的答案是 answer. -A-'關(guān)閉一般用于描述目標(biāo)機的標(biāo)準(zhǔn)斷言-Dmacro定義宏macro,宏的內(nèi)容定義為字符串'1'.-Dmacro=defn定義宏macro的內(nèi)容為defn.命令行上所有的'-D'選項在'-U'選項之前處理-Umacro取消宏macro.、-U'選項在所有的'-D'選項之后處理,但是優(yōu)先于任何'-include'或'-imacros'選項-dM告訴預(yù)處理器

43、輸出有效的宏定義列表(預(yù)處理結(jié)束時仍然有效的宏定義)該選項需結(jié)合'-E'選項使用-dD告訴預(yù)處理器把所有的宏定義傳遞到輸出端,按照出現(xiàn)的順序顯示-dN和'-dD'選項類似,但是忽略宏的參量或內(nèi)容.只在輸出端顯示'#define name.匯編器選項(ASSEMBLER OPTION)-Wa,opti on把選項option傳遞給匯編器.如果option含有逗號,就在逗號處分割成多個選項連接器選項(LINKER OPTION)下面的選項用于編譯器連接目標(biāo)文件,輸出可執(zhí)行文件的時候.如果編譯器不進行連接,他們就毫無意義.object-file-name如果某

44、些文件沒有特別明確的后綴a special recognized suffix, GCC就認(rèn)為他們是目標(biāo)文件或庫文件.(根據(jù)文件內(nèi)容,連接器能夠區(qū)分目標(biāo)文件和庫文件).如果GCC執(zhí)行連接操作,這些目標(biāo)文件將成為連接器的輸入文件 -llibrary連接名為library的庫文件.連接器在標(biāo)準(zhǔn)搜索目錄中尋找這個庫文件,庫文件的真正名字是'liblibrary.a'.連接器會 當(dāng)做文件名得到準(zhǔn)確說明一樣引用這個文件.搜索目錄除了一些系統(tǒng)標(biāo)準(zhǔn)目錄外,還包括用戶以'-L'選項指定的路徑.一般說來用這個方法找到的文件是庫文件-即由目標(biāo)文件組成的歸檔文件(archive fi

45、le).連接器處理歸檔文件的方法是:掃描歸檔文件,尋找某些成員,這些成員的符號目前已被引用,不過還沒有被定義.但是,如果連接器 找到普通的目標(biāo)文件,而不是庫文件,就把這個目標(biāo)文件按平常方式連接進來.指定'-I'選項和指定文件名的唯一區(qū)別是,'-I選項用'lib'和'.a把library包裹起來,而且搜索一些目錄.-lobjc這個-l選項的特殊形式用于連接Objective C程序.-no startfiles不連接系統(tǒng)標(biāo)準(zhǔn)啟動文件,而標(biāo)準(zhǔn)庫文件仍然正常使用.-no stdlib不連接系統(tǒng)標(biāo)準(zhǔn)啟動文件和標(biāo)準(zhǔn)庫文件.只把指定的文件傳遞給連接器.-st

46、atic在支持動態(tài)連接(dynamic linking)的系統(tǒng)上,阻止連接共享庫.該選項在其他系統(tǒng)上無效.-shared生成一個共享目標(biāo)文件,他可以和其他目標(biāo)文件連接產(chǎn)生可執(zhí)行文件.只有部分系統(tǒng)支持該選項.-symbolic建立共享目標(biāo)文件的時候,把引用綁定到全局符號上.對所有無法解析的引用作出警告(除非用連接編輯選項'-Xli nker -z -Xli nker defs'取代).只有部分系統(tǒng)支持該選項.-Xli nker opti on把選項option傳遞給連接器可以用他傳遞系統(tǒng)特定的連接選項,GNU CC無法識別這些選項.如果需要傳遞攜帶參數(shù)的選項,你必須使用兩次

47、9;-Xlinker', 次傳遞選項,另一次傳遞他的參數(shù).例如,如果傳遞'-assert definitions',你必須寫成 '-Xlinker -assert -Xlinker definitions',而不能寫成 '-Xlinker "-assert definitions"',因 為這樣會把整個字符串當(dāng)做一個參數(shù)傳遞,顯然這不是連接器期待的-Wl,opti on把選項option傳遞給連接器.如果option中含有逗號,就在逗號處分割成多個選項.-u symbol使連接器認(rèn)為取消了symbol的符號定義,從而連

48、接庫模塊以取得定義你可以使用多個'-u'選項,各自跟上不同的符號,使得連接器調(diào)入附加的庫模塊目錄選項(DIRECTORY OPTION)下列選項指定搜索路徑,用于查找頭文件,庫文件,或編譯器的某些成員:-Idir在頭文件的搜索路徑列表中添加dir目錄.-I-任何在'-I-'前面用'-I'選項指定的搜索路徑只適用于'#include "file"'這種情況;他們不能用來搜索'#inelude<file>'包含的頭文件.如果用'-I'選項指定的搜索路徑位于'-I-

49、'選項后面,就可以在這些路徑中搜索所有的'#inelude'指令.(一般說來-I選項就是這么用的.)還有,'-I-'選項能夠阻止當(dāng)前目錄(存放當(dāng)前輸入文件的地方)成為搜索'#inelude "file"'的第一選擇.沒有辦法克 服'-I-'選項的這個效應(yīng).你可以指定'-I.'搜索那個目錄,它在調(diào)用編譯器時是當(dāng)前目錄.這和預(yù)處理器的默認(rèn)行 為不完全一樣,但是結(jié)果通常令人滿意.'-I-'不影響使用系統(tǒng)標(biāo)準(zhǔn)目錄,因此,'-I-'和'-nostdine&#

50、39;是不同的選項.-Ldir在'-l'選項的搜索路徑列表中添加dir目錄.-Bprefix這個選項指出在何處尋找可執(zhí)行文件,庫文件,以及編譯器自己的數(shù)據(jù)文件.編譯器驅(qū)動程序需要執(zhí)行某些下面的子程序:'epp', 'cc1'(或C+勺'eelplus'), 'as'和'Id'.他把prefix當(dāng)作欲執(zhí)行的程序的前綴,既可以包括也可以不包括'machine/version/'.對于要運行的子程序,編譯器驅(qū)動程序首先試著加上'-B'前綴(如果存在).如果沒有找到文件,或沒有指定'-B'選項,編譯器接著會試驗兩個標(biāo)準(zhǔn)前綴'/usr/lib/gee/'和'/usr/loeal/lib/gee-lib/'.如果仍然沒能夠找到所需文件 ,編譯器就在'PATH環(huán)境變量指定的路徑中尋找沒加任何前綴的文件名如果有需要 運行時(run-time)支持文件'libgec.a&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論