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...