linux 下gcc的使用

2021-08-20 20:29:54 字數 1514 閱讀 3066

在linux系統中,可執行檔案沒有統一的字尾,系統從檔案的屬性來區分可執行檔案和不可執行檔案。而gcc則通過字尾來區別輸入檔案的類別,下面介紹gcc所遵循的部分約定規則。

.c為字尾的檔案,c語言源**檔案;

.a為字尾的檔案,是由目標檔案構成的庫檔案;

.c,.cc或.cxx 為字尾的檔案,是c++源**檔案;

.h為字尾的檔案,是程式所包含的標頭檔案;

.i 為字尾的檔案,是已經預處理過的c源**檔案;

.m為字尾的檔案,是objective-c源**檔案;

.o為字尾的檔案,是編譯後的目標檔案;

.s為字尾的檔案,是組合語言源**檔案;

.s為字尾的檔案,是經過預編譯的組合語言源**檔案

一. 常用編譯命令選項

假設源程式檔名為test.c。

1. 無選項編譯鏈結

用法:gcc test.c

作用:將test.c預處理、彙編、編譯並鏈結形成可執行檔案。這裡未指定輸出檔案,預設輸出為a.out。

2. 選項 -o

用法:gcc test.c -o test

作用:將test.c預處理、彙編、編譯並鏈結形成可執行檔案test。-o選項用來指定輸出檔案的檔名。

3. 選項 -e

用法:gcc -e test.c -o test.i

作用:將test.c預處理輸出test.i檔案。

4. 選項 -s

用法:gcc -s test.i 

作用:將預處理輸出檔案test.i彙編成test.s檔案。

5. 選項 -c

用法:gcc -c test.s

作用:將彙編輸出檔案test.s編譯輸出test.o檔案。

6. 無選項鏈結

用法:gcc test.o -o test

作用:將編譯輸出檔案test.o鏈結成最終可執行檔案test。

7. 選項-o

用法:gcc -o1 test.c -o test

作用:使用編譯優化級別1編譯程式。級別為1~3,級別越大優化效果越好,但編譯時間越長。

二. 多原始檔的編譯方法

如果有多個原始檔,基本上有兩種編譯方法:

[假設有兩個原始檔為test.c和testfun.c]

1. 多個檔案一起編譯

用法:gcc testfun.c test.c -o test

作用:將testfun.c和test.c分別編譯後鏈結成test可執行檔案。

2. 分別編譯各個原始檔,之後對編譯後輸出的目標檔案鏈結。

用法:gcc -c testfun.c //將testfun.c編譯成testfun.o

gcc -c test.c //將test.c編譯成test.o

gcc -o testfun.o test.o -o test //將testfun.o和test.o鏈結成test

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

執行程式 例如./a.out就可以執行程式

linux 下gcc的使用

在linux系統中,可執行檔案沒有統一的字尾,系統從檔案的屬性來區分可執行檔案和不可執行檔案。而gcc則通過字尾來區別輸入檔案的類別,下面介紹gcc所遵循的部分約定規則。c為字尾的檔案,c語言源 檔案 a為字尾的檔案,是由目標檔案構成的庫檔案 c,cc或.cxx 為字尾的檔案,是c 源 檔案 h為字...

linux下gcc的使用

假設源程式檔名為test.c。1.無選項編譯鏈結用法 gcc test.c2.選項 o用法 gcc test.c o test3.選項 e用法 gcc e test.c o test.i 作用 將test.c預處理輸出test.i檔案。4.選項 s用法 gcc s test.i 作用 將預處理輸出檔...

linux下gcc編輯器使用

gcc是乙個c語言編譯器,全程為gnu c compiler的英文縮寫。gcc具有交叉編譯功能,即在乙個平台下編譯另乙個平台的 gcc支援的字尾名解釋 c c語言源 檔案 a 有目標構成的檔案庫檔案,靜態庫檔案 c cc 或 cxx c 源 檔案 h 程式所包含的標頭檔案 i 已經與處理過的c原始碼...