VIM編輯器與GCC編譯器_第1頁
VIM編輯器與GCC編譯器_第2頁
VIM編輯器與GCC編譯器_第3頁
VIM編輯器與GCC編譯器_第4頁
VIM編輯器與GCC編譯器_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、linux操作系統(tǒng)華軟軟件學院電子系華軟軟件學院電子系P1教學內容教學內容Vim編輯器編輯器Gcc編譯器與編譯器與gdb調試器調試器Makefile的編寫的編寫linux操作系統(tǒng)華軟軟件學院電子系華軟軟件學院電子系P2教學要求教學要求掌握掌握vim編輯器的常用命令,能夠熟練使用編輯器的常用命令,能夠熟練使用vim編輯器編寫編輯器編寫C語言程序語言程序掌握掌握gcc編譯器及編譯器及gdb調試器的使用,能夠調試器的使用,能夠編寫簡單的編寫簡單的makefile文件文件重點:重點:vim的常用命令、的常用命令、makefile的編寫的編寫linux操作系統(tǒng)華軟軟件學院電子系華軟軟件學院電子系P33第

2、二節(jié)VimVim編輯器編輯器linux操作系統(tǒng)華軟軟件學院電子系華軟軟件學院電子系P4VIM編輯器編輯器vi簡介簡介Linux系統(tǒng)的第一個全屏幕編輯器不是一個排版程序,只是一個文本編輯程序沒有菜單、只有相當豐富的命令Vi有三種工作模式:命令行模式、文本輸入模式、末行模式Linux下有很多編輯器,最典型的是gedit和vimgedit是界面操作,跟Windows上的編輯器差不多vi則是命令交互的編輯器linux操作系統(tǒng)華軟軟件學院電子系華軟軟件學院電子系P5VIM編輯器編輯器任何時候,只要按一下ESC鍵,即可進入vi命令行模式在shell環(huán)境下輸入啟動vi命令,進入編輯器時,也是該模式注意:此時

3、輸入的字符都被當做編輯命令來解釋并且輸入的命令并不在屏幕上顯示出來命令行模式linux操作系統(tǒng)華軟軟件學院電子系華軟軟件學院電子系P6VIM編輯器編輯器命令行模式下輸入如下命令可以進入文本輸入模式l 插入命令i、Il 附加命令a、Al 打開命令o、Ol 修改命令c(cw、cc、c$)l 取代命令r、R此時用戶輸入的任何字符都被vi當做文本內容保存起來文本輸入模式linux操作系統(tǒng)華軟軟件學院電子系華軟軟件學院電子系P7VIM編輯器編輯器在命令行模式下,用戶按“:”鍵可進入末行模式此時vi會在現(xiàn)實窗口的最后一行顯示一個“:”作為提示符,等待輸入命令大部分管理命令就是在這里輸入的末行命令執(zhí)行完后,

4、vi自動回到命令模式末行模式三種模式切換方法如圖:三種模式切換方法如圖:linux操作系統(tǒng)華軟軟件學院電子系華軟軟件學院電子系P8VIM編輯器編輯器vi編輯器啟動編輯器啟動使用vi進行編輯第一步是進入編輯界面,一般方法為:$ vi filename請嘗試創(chuàng)建新文件并編輯一段簡單的C程序linux操作系統(tǒng)華軟軟件學院電子系華軟軟件學院電子系P9VIM編輯器編輯器顯示顯示vi中的行號中的行號當編輯的文件較大時,人工確認行號不方便需通過vi的命令確認行號,在末行模式中輸入:set nu同樣,如果想取消顯示行號,則在末行模式中輸入:set number或:set nonu:set nonumber或l

5、inux操作系統(tǒng)華軟軟件學院電子系華軟軟件學院電子系P10VIM編輯器編輯器光標移動操作光標移動操作在vi操作中,不建議使用上下左右四個箭頭移動光標,而是:l h 左移 j 下移 k 上移 l 右移l 這幾個字符跟數(shù)字鍵組合,可以移動多個位置,比如l 3j 光標下移3行 5h 光標左移3格l H 移至屏幕上端 L 移至屏幕下端 M 移至屏幕中央l gg 到第一行 G 到最后一行l(wèi) nG 到第n行l(wèi) : n 到第n行l(wèi)inux操作系統(tǒng)華軟軟件學院電子系華軟軟件學院電子系P11VIM編輯器編輯器移動光標還有如下幾個常用命令l 或數(shù)字0:光標移動到行首l $:光標移動到行尾l w:光標跳轉到下一個字

6、首,按標點或單詞分割l W:光標跳轉到下一個字首,長跳,比如end-of-line是一個字l e:光標跳轉到下一個字尾l E:光標跳轉到下一個字尾,長跳l b:光標跳轉到上一個字,按標點或單詞分割l B:光標跳轉到上一個字,長跳linux操作系統(tǒng)華軟軟件學院電子系華軟軟件學院電子系P12VIM編輯器編輯器屏幕命令屏幕命令屏幕命令是以屏幕為單位去移動光標,常用于文件的滾屏和分頁l Ctrl+U:將屏幕向前(文件頭方向)翻滾半屏l Ctrl+D:將屏幕向后(文件尾方向)翻滾半屏l Ctrl+F:將屏幕向后(文件尾方向)翻滾一屏l Ctrl+B:將屏幕向前(文件頭方向)翻滾一屏linux操作系統(tǒng)華軟

7、軟件學院電子系華軟軟件學院電子系P13VIM編輯器編輯器文本插入命令文本插入命令l i:插入文本從光標所在位置前開始l I:將光標移動到當前行的行首,然后在其前插入文本文本附加命令文本附加命令l a:在光標當前位置之后追加新文本l A:將光標移動到所在行的行尾,從那里開始插入新文本文本修改命令文本修改命令l o:在光標的下面新開一行,并定位到該行的行首,等待輸入l O:在光標的上面插入一行,并定位到該行的行首,等待輸入linux操作系統(tǒng)華軟軟件學院電子系華軟軟件學院電子系P14VIM編輯器編輯器文本修改命令文本修改命令刪除刪除刪除單個字符l x:刪除光標處的字符l nx:刪除光標所在位置開始向

8、右的n個字符(n是具體的數(shù)字)l X:刪除光標前面的那個字符l nX:刪除光標前面向左的n個字符(n是具體的數(shù)字)linux操作系統(tǒng)華軟軟件學院電子系華軟軟件學院電子系P15VIM編輯器編輯器刪除多個字符l dd:刪除光標所在當前行l(wèi) D或d$:刪除從光標所在處開始到行尾的內容l d:刪除從光標前一個字符開始到行首的內容l dw:刪除一個單詞l dG:刪除光標所在行到末尾所有內容l :n1,n2d 刪除n1到n2行l(wèi)inux操作系統(tǒng)華軟軟件學院電子系華軟軟件學院電子系P16VIM編輯器編輯器復制和剪切命令l yy、Y 復制當前行l(wèi) nyy、nY 復制當前行以下n行l(wèi) dd 剪切當前行l(wèi) ndd

9、 剪切當前行以下n行l(wèi) p、P粘貼在光標所在行下或行上替換和重復命令l r 取代光標所在處字符l R 從光標所在處開始替換字符,直到按ESC結束l . 重復上一次命令操作linux操作系統(tǒng)華軟軟件學院電子系華軟軟件學院電子系P17VIM編輯器編輯器搜索和替換l /string 搜索指定字符串stringl :set ic 搜索時忽略大小寫;:set noic區(qū)分大小寫l n 下一個搜索到的位置;N上一個搜索到的位置l :%s/old/new/g 全文替換,將old替換為new,g不需確認l :n1,n2s/old/new/c 指定行替換,c需要確認linux操作系統(tǒng)華軟軟件學院電子系華軟軟件學

10、院電子系P18VIM編輯器編輯器文本修改命令文本修改命令取消取消取消上一個命令,也稱復原命令可以取消前一次的誤操作或不合適的操作對文件的影響l u:取消剛才的操作,可取消多次,直到最初狀態(tài)l U:取消剛才的操作,只取消前一步操作文本修改命令文本修改命令恢復恢復恢復剛剛取消的命令可以把剛通過u命令取消的操作,重新輸入l Ctrl + r:恢復剛才取消的內容linux操作系統(tǒng)華軟軟件學院電子系華軟軟件學院電子系P19VIM編輯器編輯器退出退出vi編輯完文件后,準備退出vi返回shell時,可以在末行模式下,使用如下方法:l :w newfile 保存文件為newfile,但并不退出l :q 退出v

11、i。如果未保存,vi將提示不能退出l :wq newfile 保存并退出l :q! 強制退出,不保存l :x 如果修改過,則保存退出;如果未修改過,則直接退出l ZZ 快捷鍵,保存修改并退出linux操作系統(tǒng)華軟軟件學院電子系華軟軟件學院電子系P20VIM編輯器編輯器設置設置vi可以通過/.vimrc文件對vi進行默認的設置也可在末行模式中設置l set nu:顯示行號l syntax on:語法高亮(編程時適用)l set undolevels=200:undo最大次數(shù)l set ignorecase:忽略大小寫l set autoindent:自動縮進(編程時適用)l set tabsto

12、p=4:設置tab鍵的寬度linux操作系統(tǒng)華軟軟件學院電子系華軟軟件學院電子系P21VIM編輯器編輯器多窗口、多文件多窗口、多文件n命令模式下輸入n:e file可以再打開一個文件,并且此時vim里會顯示出file文件的內容。n同時顯示多個文件:u:sp /水平切分窗口u:vsplit /垂直切分窗口n文件間切換uCtrl+6 /兩文件間的切換n窗口間切換的方法uCtrl+w+方向鍵切換到前下上后一個窗格uCtrl+w+h/j/k/l 同上uCtrl+ww依次向后切換到下一個窗格中l(wèi)inux操作系統(tǒng)華軟軟件學院電子系華軟軟件學院電子系P22GCC編譯器編譯器介紹介紹gccgcc是gnu推出的

13、功能強大、性能優(yōu)越的多平臺編譯器可以在多種平臺上編譯出可執(zhí)行程序的編譯器集合gcc的編譯流程分為4個步驟,如下linux操作系統(tǒng)華軟軟件學院電子系華軟軟件學院電子系P23GCC編譯器編譯器該階段,編譯器會將代碼中的stdio.h編譯出來用戶可以使用gcc的選項“-E”進行查看預編譯步驟$ gcc -E hello.c -o hello.i留意生成的hello.i文件預編譯的過程,其實是把stdio.h的內容插入hello.i文件中l(wèi)inux操作系統(tǒng)華軟軟件學院電子系華軟軟件學院電子系P24GCC編譯器編譯器該階段,編譯器會將C代碼轉化為匯編代碼使用gcc的-S選項進行查看編譯步驟$ gcc -

14、S hello.i -o hello.s留意生成的hello.s文件linux操作系統(tǒng)華軟軟件學院電子系華軟軟件學院電子系P25GCC編譯器編譯器該階段,編譯器會將匯編代碼轉化成目標文件使用gcc的-c選項進行匯編步驟$ gcc -c hello.s -o hello.o鏈接步驟$ gcc hello.o -o hello該階段,編譯器會將目標文件和函數(shù)庫進行鏈接最終生成可執(zhí)行的二進制文件執(zhí)行步驟$ chmod 755 hello$ ./hellolinux操作系統(tǒng)華軟軟件學院電子系華軟軟件學院電子系P26GCC編譯器編譯器gcc基本用法和常用選項基本用法和常用選項gcc命令的基本用法如下:$

15、 gcc options filename前面介紹的4個步驟,我們可以一次全部執(zhí)行,如下:$ gcc hello.c -o hello當沒有指定-o選項時,默認生成的可執(zhí)行文件為a.out$ gcc hello.c$ ./a.outlinux操作系統(tǒng)華軟軟件學院電子系華軟軟件學院電子系P27GCC編譯器編譯器gcc命令的的常用參數(shù)如下:l -c:只激活預處理、編譯、匯編,只編譯成obj文件,不鏈接l -S:只激活預處理、編譯,把文件編譯成匯編代碼l -E:只激活預處理,不生成文件,不編譯l -o:指定目標名稱,當不指定時則默認為a.outl -i file:包含某個代碼,功能相當于在代碼中使用

16、#includel -I dir:首先在指定目錄查找#include指定的文件l -l library:指定編譯時使用的庫l -L dir:指定編譯時搜索庫的路徑l -O0、-O1、-O2、-O3:編譯器的優(yōu)化選項的4個級:0沒有優(yōu)化、1是默認、3是最高l -g:指定編譯器在編譯時產生調試信息(參考gdb一節(jié))l -Wall:顯示附加的警告消息linux操作系統(tǒng)華軟軟件學院電子系華軟軟件學院電子系P2828第二節(jié)gdbgdb調試器調試器linux操作系統(tǒng)華軟軟件學院電子系華軟軟件學院電子系P29GDB調試器調試器gdb簡介簡介gdb能在程序運行時,觀察程序的內部結構和內存堆棧情況gdb主要功能

17、如下:l 監(jiān)視程序中變量的值l 設置程序斷點l 逐行執(zhí)行代碼linux操作系統(tǒng)華軟軟件學院電子系華軟軟件學院電子系P30GDB調試器調試器gdb調試時常用的命令如下:命令命令說明說明file裝入想要調試的可執(zhí)行文件裝入想要調試的可執(zhí)行文件kill終止正在調試的程序終止正在調試的程序list列出產生執(zhí)行文件的源碼的一部分列出產生執(zhí)行文件的源碼的一部分next執(zhí)行一行源代碼但不進入函數(shù)內部執(zhí)行一行源代碼但不進入函數(shù)內部step執(zhí)行一行源代碼并且進入函數(shù)內部執(zhí)行一行源代碼并且進入函數(shù)內部run執(zhí)行當前被調試的程序執(zhí)行當前被調試的程序quit終止終止gdbwatch監(jiān)視一個變量的值而不管它何時被改變監(jiān)

18、視一個變量的值而不管它何時被改變break在代碼中設置斷點,使程序執(zhí)行到這里時被掛起在代碼中設置斷點,使程序執(zhí)行到這里時被掛起make不退出不退出gdb情況下,可以重新產生可執(zhí)行文件情況下,可以重新產生可執(zhí)行文件shell不離開不離開gdb,執(zhí)行,執(zhí)行UNIX shell命令命令linux操作系統(tǒng)華軟軟件學院電子系華軟軟件學院電子系P3131第三節(jié)MakefileMakefilelinux操作系統(tǒng)華軟軟件學院電子系華軟軟件學院電子系P32MakefileMakefile文件文件利用make工具,可以將大型項目分解成多個更容易管理的模塊方便管理人員梳理各個源文件之間復雜的關系一個make命令,可

19、以編譯不同目錄下的多個源文件make工具最主要最基本的功能是通過makefile文件來描述源程序之間的相互關系,并自動維護編譯工作如果一個目錄下沒有Makefile文件,輸入make命令,系統(tǒng)報錯linux操作系統(tǒng)華軟軟件學院電子系華軟軟件學院電子系P33MakefileLinux系統(tǒng)中,習慣使用Makefile文件名編譯是輸入make命令即可$ make f Makefile.debug如果要使用其他文件(一般不建議),則需要通過-f選項指定$ makelinux操作系統(tǒng)華軟軟件學院電子系華軟軟件學院電子系P34Makefile假設一個工程中包含filea.c、fileb.c、test.c三

20、個文件如果用gcc編譯這個工程,需要$ make現(xiàn)在我們使用Makefile對這個工程進行管理,則建立Makefile文件$ gcc -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將自動幫我們進行編譯linux操作系統(tǒng)華軟軟件學院電子系華軟軟件學院電子系P35Makefile現(xiàn)在我們簡單分析一下這個Makefile文件指定prog程序由3個目標文件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指定目標文件

溫馨提示

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

評論

0/150

提交評論