gcc
基於C/C++的編譯器
補充說明
gcc命令 使用GNU推出的基於 C/C++
的編譯器,是開放源代碼領域應用最廣泛的編譯器,具有功能強大,編譯代碼支持性能優化等特點。現在很多程序員都應用 GCC
,怎樣才能更好的應用 GCC
。目前,GCC
可以用來編譯 C/C++
、FORTRAN
、JAVA
、OBJC
、ADA
等語言的程序,可根據需要選擇安裝支持的語言。
語法
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.c
和 testfun.c
多個文件一起編譯
1gcc testfun.c test.c -o test
將 testfun.c
和 test.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
版權申明:
- 未標註來源的內容皆為原創,未經授權請勿轉載(因轉載後排版往往錯亂、內容不可控、無法持續更新等);
- 非營利為目的,演繹本博客任何內容,請以'原文出處'或者'參考鏈接'等方式給出本站相關網頁地址(方便讀者)。