天天看點

linux基礎工具(vim,gcc/g++,gdb)

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之後我們就可以進行自己想要的設定,在檔案末尾添加指令了

linux基礎工具(vim,gcc/g++,gdb)

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

繼續閱讀