1.掌握vim編輯器的使用,學會vim的簡單配置
2.掌握gcc編譯器的使用,并了解器過程原理
3.掌握簡單的gdb用于調試
1.vim
vim是vi的更新版多模式編輯器,vim相容vi的所有指令同時還加入了一些新的特性,用起來更加的友善
(1)vim的概念和基本使用操作
vim的基本模式:(總共有12種模式但這裡隻介紹三種)
正常模式:控制光标的移動,删除的一些操作
插入模式:隻有在插入模式下才能進行輸入
末行模式:檔案的儲存或退出,檔案的替換等操作
模式切換:在我們計入vim是處于正常模式,要進行模式切換才能執行不同的操作
正常->插入(a/i/o)
插入->正常(esc鍵)
正常->末行(shift+;(分号鍵)就是輸入:)
退出級儲存vim檔案在末行模式下
w(儲存目前檔案)
wq(儲存并退出)
q!(不儲存強制退出)
(2)vim的正常模式指令
移動光标:
hjkl分别控制光标的坐上下右移動
按「GJ:移動到文章的最後
按「$」;移動到光标所在行的“行尾”。
按「^」:移動到光标所在行的“行首”。
按「w」:光标跳到下個字的開頭。
按「e」:光标跳到下個字的字尾。
按「b」:光标回到上個字的開頭
按「#l」:光标移到該行的第#個位置,如: 5l,56l
按[gg]:進入到文本開始。
按[shift+g] :進入文本末端
按「ctrl」+「b」:螢幕往“後”移動一頁。
按「ctrlJ +「fJ :螢幕往“前“移動一頁。
按「ctrlJ +「u」↓螢幕往“後”移動半頁。
按「ctrlJ +「d」:螢幕往“前“移動半頁
删除文字:
「x」:每按一次,删除光标所在位置的一個字元
[#x」:例如,「6x」 表示删除光标所在位置的“後面(包含自己在内)“6個字元
「X」:大寫的X,每按一次,删除光标所在位置的“前面"-一個字元「#X」:例如,「20X」 表示删除光标所在位置的“前面"20個字元
「dd」:删除光标所在行
「#dd」:從光标所在行開始删除#行
複制
「yw」:将光标所在之處到字尾的字元複制到緩沖區中。
「#yw」:複制#個字到緩沖區
「yy」 :複制光标所在行到緩沖區。
「#yy」:例如,「6yy」 表示拷貝從光标所在的該行“往下數”6行文字。
「p」:将緩沖區内的字元貼到光标所在位置。注意:所有與y"有關的複制指令都必須與p"配合才能完成複制與粘貼功能。
替換:
「r」:替換光标所在處的字元
「R」:替換光标所到之處的字元,直到按下「esc」鍵為止
撤銷與恢複:
「u」:撤銷操作
「ctrl+r」:撤銷的恢複
(3)vim末行模式指令
首先按esc鍵處于正常模式再按:進入末行模式
列出行号
。「set nu」 ;輸入「setnu」後,會在檔案中的每一行前面列出行号。
跳到檔案中的某一行
。「#」:「#」 号表示一個數字,在冒号後輸人一個數字,再按Enter鍵就會跳到該行了,如輸入數字15,再回車,就會跳到文章的第15行。
查找字元
。「/關鍵宇」 :先按「/」鍵,再輸人您想尋找的字元,如果第一次找的關鍵字不是 您相要的,可以一直按「n」會往後尋找到您要的關鍵宇為止。
「?關鍵字」 先按 「?」鍵,再輸入您想尋找的字元, 如果第-一次找的關鍵字不是您想要的。可以一直按「n」會往前尋找到您要的關鍵字為止。
儲存檔案
「W」:在冒号輸入字母「wI就可以将檔案儲存起來
離開vim
。「q」:按「q」就是退出,如果無法離開vim,可以在「q」後跟一個[!」強制離開vim。。「wq」:一般建議離開時,搭配「w」-起使用,這樣在退出的時候還可以儲存檔案。
簡單vim配置
在日錄/etc/下面,有個名為vimrc的檔案,這是系統中公共的vim配置檔案,對所有使用者都有效。而在每個使用者的主日錄下,都可以自2建立私有的配量檔案,命名為: “vimrc”. 例如,/root日錄下,通常已經存在個.wimrc檔案如果不存在,則建立之。切換使用者成為自己執行su ,進入自己的主工作目錄,執行cd ~打開自己日錄下的vimrc檔案,執行 vim.vimrc。這是我在root權限下設定的對所有使用者都有效,在打開vimrc之後我們就可以進行自己想要的設定,在檔案末尾添加指令了
set nu[顯示行号]
filetype on[檢測檔案類型]
set autoindent[自動對齊]
set tapstop=4[設定tab鍵為4個空格]
set shiftwidth=4[設定當行之間交錯時使用4個空格]
…
2.gcc/g++編譯器使用
如何使用gcc/g++進行程式的運作
1.程式運作的4個階段
預處理,編譯,彙編,連結。
gcc使用格式gcc 【選項】【需要編譯的檔案名】 【選項】【目标檔案】
預處理階段的主要功能
宏定義,檔案包括,條件編譯。去注釋等
執行個體
gcc -E test.c -o test.i
選項‘’-E‘’是讓代碼在預處理後停止編譯
xuanxiang‘’-o‘’是指目标檔案‘’i‘’檔案為已經過預處理的原始程式
編譯階段的主要功能
在這個階段gcc首先要檢查代碼的規範性,是否有文法的錯誤,在檢查沒有問題後将代碼翻譯成彙編語言代碼
gcc -S test.i -o test.s
使用者可以使用-S選項來檢視
彙編階段的主要功能
彙編階段是把編譯階段.s檔案轉化成目标檔案
gcc -c test.s -o test.o
選項-c就可以看到彙編到嗎已經轉化成二進制代碼了
連結
生稱可執行檔案或庫檔案
函數庫的概念
在程式中我們并沒有實作printf函數為什麼我們可以使用,因為系統會将這些函數的實作放到一個函數庫中,gcc會到系統預設的搜尋路徑中查找,這樣就實作了函數的使用這就是連結作用。
靜态庫和動态庫
靜态庫是指編譯連結時,把庫檔案的代碼全部加入到可執行檔案中,是以生成的檔案比較大,但在運作時也就不再需要庫檔案了。其字尾名一-般為“.a"。
動态庫與之相反,在編譯連結時并沒有把庫檔案的代碼加入到可執行檔案中,而是在程式執行時由運作時連結檔案加載庫,這樣可以節省系統的開銷。動态庫一般字尾 名為“.so",。gcc在編譯時預設使用動态庫。完成了連結之後,gcc就可以生成可執行檔案,如下所示。 gcc hello.o -0 hello
調試器gdb
開始調試:gdb binFile 退出: ctrl + d或quit調試指令:
list/I行号: 顯示binFile源代碼, 接着上次的位置往下列,每次列10行。
list/I函數名: 列出某個函數的源代碼。
r或run: 運作程式。
n或next:單條執行。
s或step: 進入函數調用
break(b)行号:在某-行設定斷點
break函數名:在某個函數開頭設定斷點。
info break :檢視斷點資訊。
finish: 執行到目前函數傳回,然後挺下來等待指令
print§: 列印表達式的值,通過表達式可以修改變量的值或者調用函數。
p變量:列印變量值。
set var: 修改變量的值
continue(或c): 從目前位置開始連續而非單步執行程式。run(或): 從開始連續而非單步執行程式。
delete breakpoints: 删除所有斷點
delete breakpoints n: 删除序号為n的斷點。disable breakpoints:禁用斷點。
enable breakpoints:啟用斷點
info(或i) breakpoints:參着目前設定了哪些斷點
display變量名:跟蹤檢視-個變量,每次停下來都顯示它的值
undisplay: 取消對先前設定的那些變量的跟蹤。
untilX行号: 跳至X行
breaktrace(或bt): 檢視各級函數調用及參數info (i) locals: 檢視目前棧幀局部變量的值。quit: 退出gdb