Linux下gcc編譯器的使用總結__Linux
來源:互聯網
上載者:User
一、基本選項
GCC是開源軟體中的一個頂級的C編譯器
gcc -Wall -o hello hello.c
-W是開啟警告選項
-all開啟所有
-v顯示詳細資料
-c只編譯產生目標檔案,不產生可執行檔,就是產生.o檔案
GCC不存在連結次序的問題,但最好遵守定義在後、調用在前的規則
有效管理龐大的項目,有make
二、連結外部庫
標準庫:
gcc -Wall main.c /usr/lib/libm.a -o calc
gcc -Wall main.c -lm -o calc
-lm相當於libm.a (僅對標準庫)
使用標頭檔<math.h>時使用此選項
-I選項指明了在哪個目錄下搜尋標頭檔
gcc -Wall -I/opt/mysoft/include -o main
-L指定了搜尋的庫檔案目錄
指定環境變數
如果既定義了-I,-L和環境變數,則優先找-I和-L,如果沒有找到,就去找環境變數,如果環境變數還沒有找到,則去找系統路徑
推薦-I,-L這種方法
三、建立自己的庫
ar 命令:把一堆的目標檔案.o合成一個庫檔案
ar cr libName.a file1.o file2.o ... filen.o
查看一庫裡有多少個目標檔案
ar t libName.a
gcc -Wall -c main.c libFunc.a -o hello
-c main.c 和 libFunc.a的順序不能交換
gcc -Wall main.c -L. -lfunc -o hello
gcc -Wall main.c -L/home/baiyun/study/mysoft -lfunc -o hello
四、動態庫和靜態庫
.lib .a
.dll .so
用ldd a.out來查看 a.out需要哪些動態庫
五、C語言標準
gcc如果不加選項,則使用 GNU標準編譯,加-ansi,-std,最新版是-std=c99
gcc -Wall -ansi -D_GNU_SOURCE pi.c -o pp
使用標準C來編譯 ,但連結時候使用GNU的庫
-ansi -pedantic兩個參數連用,就嚴格按照標準C來調用