Linux下GCC程序開發(fā)環(huán)境.ppt_第1頁
Linux下GCC程序開發(fā)環(huán)境.ppt_第2頁
Linux下GCC程序開發(fā)環(huán)境.ppt_第3頁
Linux下GCC程序開發(fā)環(huán)境.ppt_第4頁
Linux下GCC程序開發(fā)環(huán)境.ppt_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、Linux 系統(tǒng)C語言程序設(shè)計,教 師: 胡 青,第二章 Linux系統(tǒng)下GCC編程開發(fā)環(huán)境,二一二年九月,目 錄,Linux系統(tǒng)下GCC概述,1,2,利用GCC編譯第一個程序,3,GCC編譯多個組合程序,5,GCC下程序調(diào)試,6,集成化開發(fā)環(huán)境geany,4,GCC下make管理程序,Linux系統(tǒng)下GCC概述,1、概述 (1)GCC 安裝驗證 Ubuntu 系統(tǒng)安裝后 GCC通常并不是默認安裝,此種情況下可以通過編寫簡單程序進行測試,如: #include Int main(void) printf(“hello First Linux Programmer! /n”); return 0

2、; ,Linux系統(tǒng)下GCC概述,1、概述 (1)GCC 安裝驗證 存儲文件hello.c; 打開terminal終端,輸入指令: gcc hello.c o hello 如果沒有錯誤返回則證明GCC已經(jīng)安裝,否則需要進行手動安裝。 也可以直接用指令檢測: $:gcc version 輸出根據(jù)版本不同而不同。,Linux系統(tǒng)下GCC概述,1、概述 (2)GCC 安裝 1)確認網(wǎng)絡(luò)正常連接; 2)在終端界面中輸入指令: sudo apt-get install build-enssential 或 sudo apt-get install gcc 3)中間需要輸入兩次或一次:Y后就會自動安裝。

3、4)安裝完畢用驗證指令進行驗證即可。,Linux系統(tǒng)下GCC概述,1、概述 (3)GCC 編譯處理流程,目 錄,Linux系統(tǒng)下GCC概述,1,2,利用GCC編譯第一個程序,3,GCC編譯多個組合程序,5,GCC下程序調(diào)試,6,集成化開發(fā)環(huán)境geany,4,GCC下make管理程序,利用GCC編譯第一個程序,1、建立第一個程序 利用文本文件,編寫第一個大家好程序如下: #include Int main(void) printf(“hello 大家好! n”); return 0; 程序名稱存為”hello.c”,Linux系統(tǒng)下GCC概述,2、GCC 常用編譯指令 1)無選項編譯鏈接用法:$

4、 gcchello.c作用:將hello.c預(yù)處理、匯編、編譯并鏈接形成可執(zhí)行文件。這里未指定輸出文件,默認輸出為a.out。2)選項-o用法:$ gcchello.c-ohello作用:將hello.c預(yù)處理、匯編、編譯并鏈接形成可執(zhí)行文件hello(可自定義名稱)。-o選項用來指定輸出文件的文件名。3.選項-E (大寫)用法:$ gcc-Ehello.c-ohello.i作用:將hello.c預(yù)處理輸出hello.i文件。,Linux系統(tǒng)下GCC概述,2、GCC 常用編譯指令 4)選項-S(大寫)用法:$ gcc-Shello.i作用:將預(yù)處理輸出文件hello.i匯編成hello.s文件

5、。5)選項-c用法:$ gcc-chello.s作用:將匯編輸出文件hello.s編譯輸出hello.o文件。6)無選項鏈接用法:$ gcchello.o-ohello作用:將編譯輸出文件hello.o鏈接成最終可執(zhí)行文件hello。,Linux系統(tǒng)下GCC概述,2、GCC 常用編譯指令 7)選項-O(大寫)用法:$ gcc-O1hello.c-ohello作用:使用編譯優(yōu)化級別1編譯程序。級別為13,級別越大優(yōu)化效果越好,但編譯時間越長。 8)選項-Wall 用法:$ gcc Wall hello.c o hello1 作用:能夠顯示所有的警告信息,以便于修改調(diào)試。,目 錄,Linux系統(tǒng)下

6、GCC概述,1,2,利用GCC編譯第一個程序,3,GCC編譯多個組合程序,5,GCC下程序調(diào)試,6,集成化開發(fā)環(huán)境geany,4,GCC下make管理程序,GCC編譯多個組合程序,1、編寫多組合文件代碼 1)聲明頭文件:Mhello.h /*hello輸出 主函數(shù)聲明*/ int helloOut(void); 2)編寫函數(shù)主題文件:Mhello.c /*hello輸出 主函數(shù)原型函數(shù)*/ #include int helloOut(void) printf(hello, 大家好!n); return 0; ,GCC編譯多個組合程序,1、編寫多組合文件代碼 3)編寫主函數(shù):helloTest.

7、c /*主函數(shù)調(diào)用hello輸出*/ #include Mhello.h int main(void) return helloOut(); ,GCC編譯多個組合程序,2、編譯測試 1)直接編譯指令: $ gcc helloTest.c Mhello.c o helloTest 2) 分別編譯后再進行鏈接 $ gcc-cMhello.c/將Mhello.c編譯成Mhello.o#gcc-chelloTest.c/將helloTest.c編譯成helloTest.o#gcc-oMhello.ohelloTest.o-ohelloTest/將Mhello.o和helloTest.o鏈接成hello

8、Test,目 錄,Linux系統(tǒng)下GCC概述,1,2,利用GCC編譯第一個程序,3,GCC編譯多個組合程序,5,GCC下程序調(diào)試,6,集成化開發(fā)環(huán)境geany,4,GCC下make管理程序,GCC下make管理程序,1、make作用 1)復(fù)雜程序項目,手工編譯很難處理,如上千個文件的系統(tǒng),必須通過一種工具進行管理。 2)make命令就是起這一作用的。 3)make命令執(zhí)行后,根據(jù)makefile文件指令進行自動編譯。 4)make命令能夠自動判斷更新文件進行編譯,而不處理沒有修改過的文件。 5)重點是makefile文件的編寫十分重要。,GCC下make管理程序,2、makefile編寫規(guī)則

9、1)makefile中可以有多種規(guī)則,每條可規(guī)則告訴make編譯那些文件、怎樣編譯以及在什么條件下編譯。 2)每條規(guī)則需包含如下內(nèi)容: 一個“目標體”(target),即make最終要創(chuàng)建的東西。 包含一個或多個“依賴體”(dependency)的列表,依賴體通常是編譯目標體需要的其他文件。 為了從指定的依賴體所需執(zhí)行的“命令”(command)的列表。,GCC下make管理程序,2、makefile編寫規(guī)則 3)每條規(guī)則通用形式如下: target:dependency1 dependency2 command command 4) Makefile中只認制表符(tab鍵縮進),不識空格。

10、5)沒有依賴體的可以作為make的“偽目標” 6)在make文件中也可以定義變量和宏等。,GCC下make管理程序,3、makefile編寫示例 生成makefile文件如下: 1)helloTest:helloTest.o Mhello.o Mhello.h gcc helloTest.o Mhello.o -o helloTest 2)Mhello.o:Mhello.c Mhello.h gcc -c Mhello.c 3)helloTest.o:helloTest.c gcc -c helloTest.c 4)hello:hello.c gcc hello.c -o hello 5)al

11、l:helloTest hello 6)clean: rm helloTest hello *.o,目 錄,Linux系統(tǒng)下GCC概述,1,2,利用GCC編譯第一個程序,3,GCC編譯多個組合程序,5,GCC下程序調(diào)試,6,集成化開發(fā)環(huán)境geany,4,GCC下make管理程序,GCC下程序調(diào)試,1、gbd命令介紹 gbd命令集在Linux下是與make指令系統(tǒng)并列的gcc下調(diào)試工具指令。全稱為“GNU bug debuger” 具有全系列調(diào)試程序的各種指令和方法。 gbd安裝:sudo apt-get install gdb 2、常用gbd命令 1)backtrace 顯示程序中的當(dāng)前位置和

12、表示如何到達當(dāng)前位置的棧跟蹤(同義詞:where) 2)breakpoint 在程序中設(shè)置一個斷點 3)cd 改變當(dāng)前工作目錄 4)clear 刪除剛才停止處的斷點 5)commands 命中斷點時,列出將要執(zhí)行的命令 6)continue 從斷點開始繼續(xù)執(zhí)行,GCC下程序調(diào)試,2、常用gbd命令 7) delete 刪除一個斷點或監(jiān)測點;也可與其他命令一起使用 8) display 程序停止時顯示變量和表達時 9) down 下移棧幀,使得另一個函數(shù)成為當(dāng)前函數(shù) 10) frame 選擇下一條continue命令的幀 11) info 顯示與該程序有關(guān)的各種信息 12) jump 在源程序中

13、的另一點開始運行 13) kill 異常終止在gdb 控制下運行的程序 14) list 列出相應(yīng)于正在執(zhí)行的程序的原文件內(nèi)容 15) next 執(zhí)行下一個源程序行,從而執(zhí)行其整體中的一個函數(shù),GCC下程序調(diào)試,2、常用gbd命令 16) print 顯示變量或表達式的值 17) pwd 顯示當(dāng)前工作目錄 18) pype 顯示一個數(shù)據(jù)結(jié)構(gòu)(如一個結(jié)構(gòu)或C+類)的內(nèi)容 19) quit 退出gdb 20) reverse-search 在源文件中反向搜索正規(guī)表達式 21) run 執(zhí)行該程序 22) search 在源文件中搜索正規(guī)表達式,GCC下程序調(diào)試,2、常用gbd命令 23) set

14、variable 給變量賦值 24) signal 將一個信號發(fā)送到正在運行的進程 25) step 執(zhí)行下一個源程序行,必要時進入下一個函數(shù) 26) undisplay display命令的反命令,不要顯示表達式 27) until 結(jié)束當(dāng)前循環(huán) 28) up 上移棧幀,使另一函數(shù)成為當(dāng)前函數(shù) 29) watch 在程序中設(shè)置一個監(jiān)測點(即數(shù)據(jù)斷點) 30) whatis 顯示變量或函數(shù)類型,目 錄,Linux系統(tǒng)下GCC概述,1,2,利用GCC編譯第一個程序,3,GCC編譯多個組合程序,5,GCC下程序調(diào)試,6,集成化開發(fā)環(huán)境geany,4,GCC下make管理程序,集成化開發(fā)環(huán)境geany,1、geany概述 Geany是一個使用 GTK2 工具包開發(fā)的快速和輕巧的集成開發(fā)環(huán)境(IDE),包括以下基本功能:語法高亮顯示,代碼折疊,代碼自動補完,自動補完經(jīng)常使用的結(jié)構(gòu)(如:if、for、while 等),自動補完 XML 和 HTML 標記(tag),調(diào)用提示,支持 C、C+、Java、PHP、HTML、Python、Perl、Pascal 等語言,符號列表等等。 支持各種編譯指令,以gtk開發(fā)包為基礎(chǔ)。,集成化開發(fā)環(huán)境geany,2、geany安裝 1)直接在軟件中心安

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論