gcc

基於C/C++的編譯器

補充說明

gcc命令 使用GNU推出的基於 C/C++ 的編譯器,是開放源代碼領域應用最廣泛的編譯器,具有功能強大,編譯代碼支持性能優化等特點。現在很多程序員都應用 GCC,怎樣才能更好的應用 GCC。目前,GCC 可以用來編譯 C/C++FORTRANJAVAOBJCADA等語言的程序,可根據需要選擇安裝支持的語言。

語法

1gcc(選項)(參數)

選項

1-o:指定生成的輸出文件;
2-E:僅執行編譯預處理;
3-S:將C代碼轉換爲彙編代碼;
4-wall:顯示警告信息;
5-c:僅執行編譯操作,不進行連接操作。
6-l:用來指定程序要鏈接的庫,-l參數緊接着就是庫名
7-I:尋找頭文件的目錄

參數

C源文件:指定C語言源代碼文件。

實例

常用編譯命令選項

假設源程序文件名爲test.c

無選項編譯鏈接

1gcc test.c

test.c 預處理、彙編、編譯並鏈接形成可執行文件。這裏未指定輸出文件,默認輸出爲 a.out

選項 -o

1gcc test.c -o test

test.c 預處理、彙編、編譯並鏈接形成可執行文件 test-o 選項用來指定輸出文件的文件名。

選項 -E

1gcc -E test.c -o test.i

test.c 預處理輸出 test.i 文件。

選項 -S

1gcc -S test.i

將預處理輸出文件 test.i 彙編成 test.s 文件。

選項 -c

1gcc -c test.s

將彙編輸出文件 test.s 編譯輸出 test.o 文件。

無選項鍊接

1gcc test.o -o test

將編譯輸出文件 test.o 鏈接成最終可執行文件 test

選項 -O

1gcc -O1 test.c -o test

使用編譯優化級別1編譯程序。級別爲1~3,級別越大優化效果越好,但編譯時間越長。

多源文件的編譯方法

如果有多個源文件,基本上有兩種編譯方法:

假設有兩個源文件爲 test.ctestfun.c

多個文件一起編譯

1gcc testfun.c test.c -o test

testfun.ctest.c 分別編譯後鏈接成 test 可執行文件。

分別編譯各個源文件,之後對編譯後輸出的目標文件鏈接。

1gcc -c testfun.c    #將testfun.c編譯成testfun.o
2gcc -c test.c       #將test.c編譯成test.o
3gcc testfun.o test.o -o test   #將testfun.o和test.o鏈接成test

以上兩種方法相比較,第一中方法編譯時需要所有文件重新編譯,而第二種方法可以只重新編譯修改的文件,未修改的文件不用重新編譯。

加載動態鏈接庫

1gcc hello.c -lpthread -o hello

手動添加文件頭路徑

1gcc hello.c -lpthread -I /lib64/ -o hello

來源:https://github.com/jaywcjlove/linux-command

最後修改於: Wednesday, January 31, 2024

相關文章:

翻譯: