什么是gcc表制?
gcc命令使用GNU推出的基于C/C++的編譯器,是開放源代碼領(lǐng)域應(yīng)用最廣泛的編譯器埋泵,具有功能強大秉撇,編譯代碼支持性能優(yōu)化等特點。現(xiàn)在很多程序員都應(yīng)用GCC秋泄,怎樣才能更好的應(yīng)用GCC琐馆。目前,GCC可以用來編譯C/C++恒序、FORTRAN瘦麸、JAVA、OBJC歧胁、ADA等語言的程序滋饲,可根據(jù)需要選擇安裝支持的語言。
gcc的使用:
-
語法
gcc [選項] [參數(shù)]
-
選項
-o:指定生成的輸出文件名稱喊巍; -E:僅執(zhí)行編譯預(yù)處理屠缭; -S:將C語言源代碼轉(zhuǎn)換為匯編代碼; -Wall:顯示警告信息崭参; -c:僅執(zhí)行編譯操作呵曹,不進(jìn)行鏈接操作
-
參數(shù)
C語言源文件
實例
常用編譯命令選項
假設(shè)源程序文件名為test.c
無選項編譯鏈接
gcc test.c //將test.c預(yù)處理、匯編、編譯并鏈接形成可執(zhí)行文件奄喂。這里未指定輸出文件铐殃,默認(rèn)輸出為a.out。選項 -o
gcc test.c -o test
將test.c預(yù)處理跨新、匯編富腊、編譯并鏈接形成可執(zhí)行文件test。-o選項用來指定輸出文件的文件名域帐。選項 -E
gcc -E test.c -o test.i
將test.c預(yù)處理輸出test.i文件赘被。選項 -S
gcc -S test.i
將預(yù)處理輸出文件test.i匯編成test.s文件。選項 -c
gcc -c test.s
將匯編輸出文件test.s編譯輸出test.o文件肖揣。無選項鏈接
gcc test.o -o test
將編譯輸出文件test.o鏈接成最終可執(zhí)行文件test民假。選項 -O
gcc -O1 test.c -o test
使用編譯優(yōu)化級別1編譯程序。級別為1~3许饿,級別越大優(yōu)化效果越好,但編譯時間越長舵盈。多源文件的編譯方法
如果有多個源文件陋率,基本上有兩種編譯方法:
假設(shè)有兩個源文件為test.c和testfun.c
多個文件一起編譯
gcc testfun.c test.c -o test
將testfun.c和test.c分別編譯后鏈接成test可執(zhí)行文件。分別編譯各個源文件秽晚,之后對編譯后輸出的目標(biāo)文件鏈接
gcc -c testfun.c #將testfun.c編譯成testfun.o
gcc -c test.c #將test.c編譯成test.o
gcc -o testfun.o test.o -o test #將testfun.o和test.o鏈接成test
以上兩種方法相比較瓦糟,第一中方法編譯時需要所有文件重新編譯,而第二種方法可以只重新編譯修改的文件赴蝇,未修改的文件不用重新編譯菩浙。