GCCGNU C Compiler)簡介
初次學習Linux 如有錯誤還請留言指定批評
1.gcc可以在多種硬件平台編譯出可執行程序,其執行效率比一般的編譯器相比高20%到30%。
2.GCC編譯器能將C、C++語言源程序、匯編程序編譯、鏈接成可執行文件。
3.在Linux系統中,可執行文件沒有統一的後綴,系統從文件的屬性來區分可執行文件和不可執行文件。
GCC通過後綴來區分的文件類別:
.c:c語言源代碼文件
.a:由目標文件構成的庫文件
.C、.cc、.cxx:C++源代碼文件
.h:頭文件
.i:已經預處理過的C源代碼文件
.ii:已經預處理過的C++源代碼文件
.o:編譯後的目標文件
.s:匯編語言代碼文件
.S:已經預處理過的匯編語言代碼文件
第一個程序
hello.c
#include<stdio.h> int main(void) { printf("hello world!\n"); return 0; }
編譯指令
# gcc hello.c -o hello
運行指令
# ./hello
運行結果:
hello world!
gcc基本用法 gcc [options][filename]
options:編譯器需要的編譯選項
filename:要編譯的文件名
-o output_filename 編譯出可執行文件的名字 不給該選項系統將給出預設的可執行文件a.out
-c 只編譯不連接成可執行文件,生成.o為後綴的目標文件
-g 產生調試工具必要的符號信息,對程序調試必選加入此選項
-O 對程序編譯連接過程優化 優化後程序執行速度將大幅度提高)
-I dirname:將dirname所指出的目錄加入到程序頭文件目錄列表中
C程序頭文件包含兩種情況:#include<x.h>
#include"x.h"
對於<>預處理程序將系統預設的頭文件目錄中如/usr/include)中搜尋相應的文件
而" "如果當前目錄沒有找到需要的文件,就到指定的dirname目錄中去尋找。
-L dirname:將dirname所指出的目錄加入到庫文件目錄列表中。在默認狀態下,連接程序ld在系統的預設路徑中如/usr/lib)尋找所需要的庫文件 先到-L指定的目錄中去尋找,然後再到系統預設路徑去尋找。
-l 連接lib中的庫
-static : 靜態鏈接庫文件
庫分為動態庫和靜態庫,動態庫以.so後綴 靜態.a後綴。
使用靜態庫時,找到所需函數,程序將他們拷貝到可執行文件
動態庫 在可執行程序留下“標記”,當程序運行時載入動態庫函數
linux下進行鏈接時,默認選擇動態庫
例:gcc -static hello.c -o hello
-Wall 生成所有警告信息
-w 不生成警告
-D 預編譯選項