




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、教學(xué)內(nèi)容Vim編輯器Gcc編譯器與gdb調(diào)試器Makefile的編寫第1頁,共40頁。教學(xué)要求掌握vim編輯器的常用命令,能夠熟練使用vim編輯器編寫C語言程序掌握gcc編譯器及gdb調(diào)試器的使用,能夠編寫簡單的makefile文件重點(diǎn):vim的常用命令、makefile的編寫第2頁,共40頁。3第二節(jié)Vim編輯器第3頁,共40頁。VIM編輯器vi簡介Linux系統(tǒng)的第一個(gè)全屏幕編輯器不是一個(gè)排版程序,只是一個(gè)文本編輯程序沒有菜單、只有相當(dāng)豐富的命令Vi有三種工作模式:命令行模式、文本輸入模式、末行模式Linux下有很多編輯器,最典型的是gedit和vimgedit是界面操作,跟Windows
2、上的編輯器差不多vi則是命令交互的編輯器第4頁,共40頁。VIM編輯器任何時(shí)候,只要按一下ESC鍵,即可進(jìn)入vi命令行模式在shell環(huán)境下輸入啟動(dòng)vi命令,進(jìn)入編輯器時(shí),也是該模式注意:此時(shí)輸入的字符都被當(dāng)做編輯命令來解釋并且輸入的命令并不在屏幕上顯示出來命令行模式第5頁,共40頁。VIM編輯器命令行模式下輸入如下命令可以進(jìn)入文本輸入模式插入命令i、I附加命令a、A打開命令o、O修改命令c(cw、cc、c$)取代命令r、R此時(shí)用戶輸入的任何字符都被vi當(dāng)做文本內(nèi)容保存起來文本輸入模式第6頁,共40頁。VIM編輯器在命令行模式下,用戶按“:”鍵可進(jìn)入末行模式此時(shí)vi會(huì)在現(xiàn)實(shí)窗口的最后一行顯示一
3、個(gè)“:”作為提示符,等待輸入命令大部分管理命令就是在這里輸入的末行命令執(zhí)行完后,vi自動(dòng)回到命令模式末行模式三種模式切換方法如圖:第7頁,共40頁。VIM編輯器vi編輯器啟動(dòng)使用vi進(jìn)行編輯第一步是進(jìn)入編輯界面,一般方法為:$ vi filename請嘗試創(chuàng)建新文件并編輯一段簡單的C程序第8頁,共40頁。VIM編輯器顯示vi中的行號當(dāng)編輯的文件較大時(shí),人工確認(rèn)行號不方便需通過vi的命令確認(rèn)行號,在末行模式中輸入:set nu同樣,如果想取消顯示行號,則在末行模式中輸入:set number或:set nonu:set nonumber或第9頁,共40頁。VIM編輯器光標(biāo)移動(dòng)操作在vi操作中,不
4、建議使用上下左右四個(gè)箭頭移動(dòng)光標(biāo),而是:h 左移 j 下移 k 上移 l 右移這幾個(gè)字符跟數(shù)字鍵組合,可以移動(dòng)多個(gè)位置,比如3j 光標(biāo)下移3行 5h 光標(biāo)左移3格H 移至屏幕上端 L 移至屏幕下端 M 移至屏幕中央gg 到第一行 G 到最后一行nG 到第n行: n 到第n行第10頁,共40頁。VIM編輯器移動(dòng)光標(biāo)還有如下幾個(gè)常用命令或數(shù)字0:光標(biāo)移動(dòng)到行首$:光標(biāo)移動(dòng)到行尾w:光標(biāo)跳轉(zhuǎn)到下一個(gè)字首,按標(biāo)點(diǎn)或單詞分割W:光標(biāo)跳轉(zhuǎn)到下一個(gè)字首,長跳,比如end-of-line是一個(gè)字e:光標(biāo)跳轉(zhuǎn)到下一個(gè)字尾E:光標(biāo)跳轉(zhuǎn)到下一個(gè)字尾,長跳b:光標(biāo)跳轉(zhuǎn)到上一個(gè)字,按標(biāo)點(diǎn)或單詞分割B:光標(biāo)跳轉(zhuǎn)到上一個(gè)字
5、,長跳第11頁,共40頁。VIM編輯器屏幕命令屏幕命令是以屏幕為單位去移動(dòng)光標(biāo),常用于文件的滾屏和分頁Ctrl+U:將屏幕向前(文件頭方向)翻滾半屏Ctrl+D:將屏幕向后(文件尾方向)翻滾半屏Ctrl+F:將屏幕向后(文件尾方向)翻滾一屏Ctrl+B:將屏幕向前(文件頭方向)翻滾一屏第12頁,共40頁。VIM編輯器文本插入命令i:插入文本從光標(biāo)所在位置前開始I:將光標(biāo)移動(dòng)到當(dāng)前行的行首,然后在其前插入文本文本附加命令a:在光標(biāo)當(dāng)前位置之后追加新文本A:將光標(biāo)移動(dòng)到所在行的行尾,從那里開始插入新文本文本修改命令o:在光標(biāo)的下面新開一行,并定位到該行的行首,等待輸入O:在光標(biāo)的上面插入一行,并定
6、位到該行的行首,等待輸入第13頁,共40頁。VIM編輯器文本修改命令刪除刪除單個(gè)字符x:刪除光標(biāo)處的字符nx:刪除光標(biāo)所在位置開始向右的n個(gè)字符(n是具體的數(shù)字)X:刪除光標(biāo)前面的那個(gè)字符nX:刪除光標(biāo)前面向左的n個(gè)字符(n是具體的數(shù)字)第14頁,共40頁。VIM編輯器刪除多個(gè)字符dd:刪除光標(biāo)所在當(dāng)前行D或d$:刪除從光標(biāo)所在處開始到行尾的內(nèi)容d:刪除從光標(biāo)前一個(gè)字符開始到行首的內(nèi)容dw:刪除一個(gè)單詞dG:刪除光標(biāo)所在行到末尾所有內(nèi)容:n1,n2d 刪除n1到n2行第15頁,共40頁。VIM編輯器復(fù)制和剪切命令yy、Y 復(fù)制當(dāng)前行nyy、nY 復(fù)制當(dāng)前行以下n行dd 剪切當(dāng)前行ndd 剪切當(dāng)
7、前行以下n行p、P粘貼在光標(biāo)所在行下或行上替換和重復(fù)命令r 取代光標(biāo)所在處字符R 從光標(biāo)所在處開始替換字符,直到按ESC結(jié)束. 重復(fù)上一次命令操作第16頁,共40頁。VIM編輯器搜索和替換/string 搜索指定字符串string:set ic 搜索時(shí)忽略大小寫;:set noic區(qū)分大小寫n 下一個(gè)搜索到的位置;N上一個(gè)搜索到的位置:%s/old/new/g 全文替換,將old替換為new,g不需確認(rèn):n1,n2s/old/new/c 指定行替換,c需要確認(rèn)第17頁,共40頁。VIM編輯器文本修改命令取消取消上一個(gè)命令,也稱復(fù)原命令可以取消前一次的誤操作或不合適的操作對文件的影響u:取消剛才
8、的操作,可取消多次,直到最初狀態(tài)U:取消剛才的操作,只取消前一步操作文本修改命令恢復(fù)恢復(fù)剛剛?cè)∠拿羁梢园褎偼ㄟ^u命令取消的操作,重新輸入Ctrl + r:恢復(fù)剛才取消的內(nèi)容第18頁,共40頁。VIM編輯器退出vi編輯完文件后,準(zhǔn)備退出vi返回shell時(shí),可以在末行模式下,使用如下方法::w newfile 保存文件為newfile,但并不退出:q 退出vi。如果未保存,vi將提示不能退出:wq newfile 保存并退出:q! 強(qiáng)制退出,不保存:x 如果修改過,則保存退出;如果未修改過,則直接退出ZZ 快捷鍵,保存修改并退出第19頁,共40頁。VIM編輯器設(shè)置vi可以通過/.vimrc文
9、件對vi進(jìn)行默認(rèn)的設(shè)置也可在末行模式中設(shè)置set nu:顯示行號syntax on:語法高亮(編程時(shí)適用)set undolevels=200:undo最大次數(shù)set ignorecase:忽略大小寫set autoindent:自動(dòng)縮進(jìn)(編程時(shí)適用)set tabstop=4:設(shè)置tab鍵的寬度第20頁,共40頁。VIM編輯器多窗口、多文件命令模式下輸入:e file可以再打開一個(gè)文件,并且此時(shí)vim里會(huì)顯示出file文件的內(nèi)容。同時(shí)顯示多個(gè)文件::sp /水平切分窗口:vsplit /垂直切分窗口文件間切換Ctrl+6 /兩文件間的切換窗口間切換的方法Ctrl+w+方向鍵切換到前下上后一個(gè)
10、窗格Ctrl+w+h/j/k/l 同上Ctrl+ww依次向后切換到下一個(gè)窗格中第21頁,共40頁。GCC編譯器介紹gccgcc是gnu推出的功能強(qiáng)大、性能優(yōu)越的多平臺(tái)編譯器可以在多種平臺(tái)上編譯出可執(zhí)行程序的編譯器集合這里以C語言為標(biāo)準(zhǔn)來介紹gccgcc的編譯流程分為4個(gè)步驟,如下第22頁,共40頁。GCC編譯器該階段,編譯器會(huì)將代碼中的stdio.h編譯出來用戶可以使用gcc的選項(xiàng)“-E”進(jìn)行查看預(yù)編譯步驟$ gcc -E hello.c -o hello.i留意生成的hello.i文件預(yù)編譯的過程,其實(shí)是把stdio.h的內(nèi)容插入hello.i文件中第23頁,共40頁。GCC編譯器該階段,編
11、譯器會(huì)將C代碼轉(zhuǎn)化為匯編代碼使用gcc的-S選項(xiàng)進(jìn)行查看編譯步驟$ gcc -S hello.i -o hello.s留意生成的hello.s文件第24頁,共40頁。GCC編譯器該階段,編譯器會(huì)將匯編代碼轉(zhuǎn)化成目標(biāo)文件使用gcc的-c選項(xiàng)進(jìn)行匯編步驟$ gcc -c hello.s -o hello.o鏈接步驟$ gcc hello.o -o hello該階段,編譯器會(huì)將目標(biāo)文件和函數(shù)庫進(jìn)行鏈接最終生成可執(zhí)行的二進(jìn)制文件執(zhí)行步驟$ chmod 755 hello$ ./hello第25頁,共40頁。GCC編譯器gcc基本用法和常用選項(xiàng)gcc命令的基本用法如下:$ gcc options fil
12、ename前面介紹的4個(gè)步驟,我們可以一次全部執(zhí)行,如下:$ gcc hello.c -o hello當(dāng)沒有指定-o選項(xiàng)時(shí),默認(rèn)生成的可執(zhí)行文件為a.out$ gcc hello.c$ ./a.out第26頁,共40頁。GCC編譯器gcc命令的的常用參數(shù)如下:-c:只激活預(yù)處理、編譯、匯編,只編譯成obj文件,不鏈接-S:只激活預(yù)處理、編譯,把文件編譯成匯編代碼-E:只激活預(yù)處理,不生成文件,不編譯-o:指定目標(biāo)名稱,當(dāng)不指定時(shí)則默認(rèn)為a.out-i file:包含某個(gè)代碼,功能相當(dāng)于在代碼中使用#include-I dir:首先在指定目錄查找#include指定的文件-l library:指
13、定編譯時(shí)使用的庫-L dir:指定編譯時(shí)搜索庫的路徑-O0、-O1、-O2、-O3:編譯器的優(yōu)化選項(xiàng)的4個(gè)級:0沒有優(yōu)化、1是默認(rèn)、3是最高-g:指定編譯器在編譯時(shí)產(chǎn)生調(diào)試信息(參考gdb一節(jié))-Wall:顯示附加的警告消息第27頁,共40頁。28第二節(jié)gdb調(diào)試器第28頁,共40頁。GDB調(diào)試器gdb簡介gdb能在程序運(yùn)行時(shí),觀察程序的內(nèi)部結(jié)構(gòu)和內(nèi)存堆棧情況gdb主要功能如下:監(jiān)視程序中變量的值設(shè)置程序斷點(diǎn)逐行執(zhí)行代碼第29頁,共40頁。GDB調(diào)試器gdb調(diào)試時(shí)常用的命令如下:命令說明file裝入想要調(diào)試的可執(zhí)行文件kill終止正在調(diào)試的程序list列出產(chǎn)生執(zhí)行文件的源碼的一部分next執(zhí)行
14、一行源代碼但不進(jìn)入函數(shù)內(nèi)部step執(zhí)行一行源代碼并且進(jìn)入函數(shù)內(nèi)部run執(zhí)行當(dāng)前被調(diào)試的程序quit終止gdbwatch監(jiān)視一個(gè)變量的值而不管它何時(shí)被改變break在代碼中設(shè)置斷點(diǎn),使程序執(zhí)行到這里時(shí)被掛起make不退出gdb情況下,可以重新產(chǎn)生可執(zhí)行文件shell不離開gdb,執(zhí)行UNIX shell命令觀察老師演示的gdb實(shí)驗(yàn)第30頁,共40頁。31第三節(jié)Makefile第31頁,共40頁。MakefileMakefile文件利用make工具,可以將大型項(xiàng)目分解成多個(gè)更容易管理的模塊方便管理人員梳理各個(gè)源文件之間復(fù)雜的關(guān)系一個(gè)make命令,可以編譯不同目錄下的多個(gè)源文件make工具最主要最基
15、本的功能是通過makefile文件來描述源程序之間的相互關(guān)系,并自動(dòng)維護(hù)編譯工作如果一個(gè)目錄下沒有Makefile文件,輸入make命令,系統(tǒng)報(bào)錯(cuò)第32頁,共40頁。MakefileLinux系統(tǒng)中,習(xí)慣使用Makefile文件名編譯是輸入make命令即可$ make f Makefile.debug如果要使用其他文件(一般不建議),則需要通過-f選項(xiàng)指定$ make第33頁,共40頁。Makefile假設(shè)一個(gè)工程中包含filea.c、fileb.c、test.c三個(gè)文件如果用gcc編譯這個(gè)工程,需要$ make現(xiàn)在我們使用Makefile對這個(gè)工程進(jìn)行管理,則建立Makefile文件$ gc
16、c -c filea.c o filea.o$ gcc -c fileb.c o fileb.o$ gcc -c test.c o test.o$ gcc filea.o fileb.o test.o o prog然后輸入命令Makefile將自動(dòng)幫我們進(jìn)行編譯第34頁,共40頁。Makefile現(xiàn)在我們簡單分析一下這個(gè)Makefile文件指定prog程序由3個(gè)目標(biāo)文件filea.o、fileb.o、test.o鏈接生成prog: filea.o fileb.o test.ogcc filea.o fileb.o test.o -o progfilea.o: filea.cgcc -c filea.c指定目標(biāo)文件filea.o由filea.c編譯生成注意:如果filea.c文件在編譯之后被修改則make可以自動(dòng)重新編譯filea.o,最后再生成新的prog第35頁,共40頁。MakefileMakefile作為一種描述文檔一般需要包含如下內(nèi)容宏定義源文件之間的相互依賴關(guān)系可執(zhí)行的命令$(CFLAGS)Makefile使用簡單的宏指代源文件或編譯信息,Linux中稱為宏變量在引用宏時(shí),需要在變量前加$符號,并把變量用()包含起來使用宏定義可以使用戶脫離
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 旅游景區(qū)擴(kuò)建用地居間
- 新能源汽車充電樁上市公司
- 新能源技術(shù)發(fā)展及應(yīng)用練習(xí)題
- 三農(nóng)村電商三農(nóng)村電商與旅游融合方案
- 農(nóng)業(yè)綜合開發(fā)項(xiàng)目可行性研究報(bào)告
- 醫(yī)療器械可行性分析報(bào)告模板
- 磐安縣生活垃圾焚燒發(fā)電項(xiàng)目
- 電影娛樂產(chǎn)業(yè)制作與發(fā)行指南
- 品牌傳播策略實(shí)施方案
- 三農(nóng)創(chuàng)新驅(qū)動(dòng)發(fā)展戰(zhàn)略作業(yè)指導(dǎo)書
- 《以哪吒精神照亮成長之路》開學(xué)家長會(huì)課件
- 公司休假銷假單模板
- 婦產(chǎn)科介入治療護(hù)理常規(guī)
- 《基于杜邦分析法的企業(yè)財(cái)務(wù)分析國內(nèi)外文獻(xiàn)綜述》
- 統(tǒng)計(jì)學(xué)調(diào)查報(bào)告(共5篇)
- 四川大學(xué)C語言上機(jī)考試題
- 2022年蕪湖職業(yè)技術(shù)學(xué)院職業(yè)適應(yīng)性測試題庫及答案解析
- DBJ∕T 15-134-2018 廣東省地下管線探測技術(shù)規(guī)程
- 人崗匹配分析和總結(jié)
- 幼小銜接拼音課程 課件(共49張PPT)
- 2020新版?zhèn)€人征信報(bào)告模板
評論
0/150
提交評論