?? gcc教程.txt
字號:
美河學習在線 eimhe.com ? 程序員大本營 ? C/C++討論區 ? GCC中文手冊(轉載自21icBBS)使用gcc的朋友必看
頁: [1]
wy79 2005-1-5 11:06
GCC中文手冊(轉載自21icBBS)使用gcc的朋友必看
GCC 中文手冊
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[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 -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
調試選項(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
優化選項(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
預處理器選項(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
目標機選項(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 -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
wy79 2005-1-5 11:08
總體選項(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.suffix ’的目標文件是`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__, __inline__和__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, sqrt, strcmp, strcpy,和strlen.
`-ansi’選項能夠阻止alloca和_exit成為內建函數.
-fhosted
按宿主環境編譯;他隱含聲明了`-fbuiltin’選項,而且警告不正確的main函數聲明.
-ffreestanding
按獨立環境編譯;他隱含聲明了`-fno-builtin’選項,而且對main函數沒有特別要求.
(譯注:宿主環境(hosted environment)下所有的標準庫可用, main函數返回一個int值,典型例子是除了 內核以外幾乎所有的程序.對應的獨立環境(freestanding environment)不存在標準庫,程序入口也不一定是 main,最明顯的例子就是操作系統內核.詳情參考gcc網站最近的資料)
-fno-strict-prototype
對于沒有參數的函數聲明,例如`int foo ();’,按C風格處理---即不說明參數個數或類型. (僅針對C++).正常情況下,這樣的函數foo在C++中意味著參數為空.
-trigraphs
支持ANSI C trigraphs. `-ansi’選項隱含聲明了`-trigraphs’.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -