GCC定義和應用

2021-07-14 14:53:45 字數 1681 閱讀 7567

1、gnu cc(gcc)是gnu專案中符合asni c標準的編譯系統

①gpl協議:開源社群的協議,裡面資源課免費試用,但是做了修改必須上傳共享

②linux與unix達成posix協議,只要基於posix協議,則編譯出的應用兩者均

可使用③gnu計畫:區別linux與unix的不同,且只能執行與linux

2、gcc是乙個交叉的平台編譯器,可以再當前的cpu平台上為多種體系結構的硬體平台開

發軟體a、預處理階段:

預處理進行三個階段,分別為:增加標頭檔案、巨集替換、條件編譯(即開頭帶#的處理)

在預處理階段,不做語法的檢查

編譯命令:gcc -e main.c -o mian.i     處理mian.c並存放於main.i

舉例:

標頭檔案的處理:a

、標頭檔案是

<>

時,在系統目錄中找,找不到則報錯

b、標頭檔案是」」時,先在當前目錄找,再到系統目錄找,找不到報錯

舉例:標頭檔案在當前目時:

b、編譯階段

在編譯階段作語法檢查和詞法分析

編譯命令:gcc -c main.c -o mian.o   

生成main.o檔案

舉例:

c、彙編階段

gcc -s hello.c 生成

hello.s 檔案

14、庫函式:只可以呼叫,但是看不到裡面的內容

庫檔案:看不到庫檔案裡面定義的函式和變數,但是可以呼叫。庫檔案分為靜態庫和動    

態庫靜態庫(.a結尾)

:在編譯時講庫檔案裡面的**搬遷到可執行檔案中

靜態庫的建立:<1>

先編譯生成

.o檔案(用

gcc -c )

<2>ar rcs libadd.a add.o(rcs中,

rc是指靜態庫不存在則建立靜態

庫,s表示更新靜態庫)

<3>編譯生成

gcc main.c -ladd -l/...

舉例:

動態庫(.so結尾)

:在執行時將需要的庫檔案裡的**搬遷到可執行檔案中

動態庫的建立:生成.so

檔案:gcc -shared -fpic add.c -o libadd.so

動態庫的呼叫:gcc main.c ./ilbadd.so -o add

舉例:

動態庫和靜態庫的優缺點:①靜態庫執行速度快,動態庫執行速度慢

②靜態庫的空間佔用率高,**擁擠;動態庫相反

③靜態庫不易公升級,動態庫易於公升級

④靜態庫布局方便,動態庫布局麻煩

動態庫和靜態庫的使用:如果平台常公升級,則用動態庫方便;如果要提高編譯效率則用

靜態庫       

gcc的簡單應用

執行 gcc egcs 執行 gcc egcs gcc 是 gnu 的 c 和 c 編譯器。實際上,gcc 能夠編譯三種語言 c c 和 object c c 語言的一種物件導向擴充套件 利用 gcc 命令可同時編譯並連線 c 和 c 源程式。int factorial int n 清單 main....

陣列的定義和應用

陣列的定義和應用 對於有些資料,只用簡單的資料型別是不夠的,難以反映出資料的特點,也難以有效地進行處理,因此就需要用到陣列。1基本概念 陣列 具有一定順序關係的若干相同型別資料的集合,為構造資料型別之一。陣列名 為該資料集合起的乙個名字 陣列元素 組成陣列的資料。屬同一資料型別,用陣列名和下標確定。...

關於gcc擴充套件中的巨集定義中用 和

關於gcc擴充套件中的巨集定義中用 和 今天測試了巨集定義中的 和 的區別。結果如下 代表和乙個字串相連線 代表和乙個符號連線,符號可以是變數,或另乙個巨集符號。舉例如下 巨集定義如下 1 define dev file name dev test kft define open file fd,n...