剛安裝上Linux系統,安好Vim的時候,還不知道該怎麼用它,後來基本上用的很多的就是 vim xxx.c、gcc
xxx.c、./aout三步走,gcc的選項很多,全部記住會很難,所以我挑出來一些常用的選項,把這些整理下來
(其實這些應該是早早就應該瞭解的,一直拖到現在,實在不應該)
1.gcc簡介
gcc命令使用GNU推出的基於C/C++的編譯器,是開放源代碼領域應用最廣泛的編譯器,具有功能強大,
編譯代碼支持性能優化等特點。現在很多程序員都應用GCC,怎樣才能更好的應用GCC。目前,GCC可
以用來編譯C/C++、FORTRANJAVA、OBJC、ADA等語言的程序,可根據需要選擇安裝支持的語言
2.gcc工作步驟
gcc/g++ 在執行編譯工作的時候,總共需要 4 步
(1)預處理,生成.i的文件[調用預處理器cpp]
(2)將預處理後的文件轉換成彙編語言,生成文件.s[調用編譯器 gcc/egcs]
(3)由彙編變爲目標代碼(機器代碼)生成.o的文件[調用匯編器as]
(4)連接目標代碼,生成可執行程序[調用鏈接器ld]
3.gcc語法:
gcc (選項) (參數)
選項:
-o:指定生成的輸出文件;
-E:僅執行編譯預處理;
-S:將C代碼轉換爲彙編代碼; -
-wall:顯示警告信息;
-c:僅執行編譯操作,不進行連接操作
參數:
C源文件:指定C語言源代碼文件
4. gcc常用選項
(1)常規選項
無選項編譯鏈接
gcc test.c
將test.c預處理、彙編、編譯並鏈接形成可執行文件。這裏未指定輸出文件,結果會在與helloworld.c相同
的目錄下產生一個a.out的可執行文件。
選項 -o
gcc test.c -o test
將test.c預處理、彙編、編譯並鏈接形成可執行文件test。-o選項用來指定輸出文件的文件名。
選項-S
gcc -S test.c
產生一個名字爲test.s的彙編源文件
選項 -c
gcc -c test.c
只編譯,不鏈接,生成一個名爲test.o的obj文件
選項-E
gcc -E test.c
只對文件進行預處理,不生成文件,預處理結果會顯示在屏幕上,如需要保存可以重定向
(2)優化選項
選項 -O
gcc -O test.c
產生一個經過優化,名爲a.out的可執行文件,也可以同時使用-o選項,以指定輸出文件名
選項-O2
gcc -O2 test.c
進一步優化,產生一個經過最大優化,名爲a.out的可執行文件
(3)調試選項
選項-g
gcc -g test.c
在編譯的時候,產生調試信息,生成供gdb調試器可用的可執行文件
選項-pg
gcc -pg test.c
產生供gpro剖析用的可執行文件
5.多源文件編譯方法
如果有多個源文件,基本有兩種編譯方法:
假設有兩個源文件爲test1.c和test2.c
多個文件一起編譯
gcc test1.c test2.c -o test
將test1.c和test2.c分別編譯後鏈接生成test可執行文件
分別編譯各個源文件,之後對編譯後輸出的目標文件鏈接
gcc -c test1.c //將test1.c編譯成test1.o
gcc -c test2.c //將test2.c編譯成test2.o
gcc -o test1.c test2.c -o test //將test1.c和test2.c鏈接成test</span>
以上兩種方法相比較,第一中方法編譯時需要所有文件重新編譯,而第二種方法可以只重新編譯修改的
文件,未修改的文件不用重新編譯