1. 程式人生 > >linux下gcc命令筆記

linux下gcc命令筆記

首先介紹一下gcc各種引數的含義:

-o:指定生成的輸出檔案;
-E:僅執行編譯預處理;
-S:將C程式碼轉換為彙編程式碼;
-wall:顯示警告資訊;
-c:僅執行編譯操作,不進行連線操作。

1: gcc -c -fPIC *.c
生成與位置無關的 .o 檔案(目標檔案):
-fPIC表明使用地址無關程式碼。

2: gcc -shared -Wl -o libmyab.so a.o b.o
-shared 引數使其生成是動態庫而不是普通執行程式。
-Wl選項告訴編譯器將後面的引數傳遞給連結器。

3: gcc -shared -Wl,-soname,libmyab.so.1 -o libhello.so.1.10 a.o b.o


soname是一個連結庫的名字,只包含共享庫的主版本號,主版本號一致即可保證庫函式的介面一致,因此應用程式的.dynamic段只記錄共享庫的soname,只要soname一致,這個共享庫就可以用。

4: gcc world.c -DDEBUG -o app
-D選項告訴編譯器在編譯時增加對-D後面的巨集的定義

5: ar rcs libxxx.a xx1.o xx2.o
建立一個靜態庫
引數r:在庫中插入模組(替換)。當插入的模組名已經在庫中存在,則替換同名的模組。
引數c:建立一個庫。不管庫是否存在,都將建立。
引數s:建立目標檔案索引,這在建立較大的庫時能加快時間。

6: gcc -I./include main.c dict.c -o app


-I:指定標頭檔案目錄