天天看點

資訊安全系統設計基礎第三周學習總結

Vim編輯器

實驗一.Vim快速入門

1.Vim模式介紹

幾乎所有的編輯器都會有插入和執行指令兩種模式,并且大多數的編輯器使用了與Vim截然不同的方式:指令目錄,組合鍵或者滑鼠輸入。Vim和vi一樣,僅僅通過鍵盤來在這些模式之中切換。這就使得Vim可以不用進行菜單或者滑鼠操作,并且最小化組合鍵的操作。對文字錄入員或者程式員可以大大增強速度和效率。

Vim具有6種基本模式和5種派生模式,6種基本模式:

  • 普通模式(Normal mode)

在普通模式中,用的編輯器指令,比如移動光标,删除文本等等。這也是Vim啟動後的預設模式。這正好和許多新使用者期待的操作方式相反(大多數編輯器預設模式為插入模式)。

普通模式指令

dd

删除目前行,但是第一個"d"的後面可以跟另外的移動指令來代替第二個

d

,比如用移動到下一行的"j"鍵就可以删除目前行和下一行。另外還可以指定指令重複次數,

2dd

(重複

dd

兩次),和

dj

的效果是一樣的。

在普通模式中,有很多方法可以進入插入模式。比較普通的方式是按

a

(append/追加)鍵或者

i

(insert/插入)鍵。
  • 插入模式(Insert mode)

在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新使用者希望文本編輯器編輯過程中一直保持這個模式。

在插入模式中,可以按

ESC

鍵回到普通模式。
  • 可視模式(Visual mode)
這個模式與普通模式比較相似。但是移動指令會擴大高亮的文本區域。高亮區域可以是字元、行或者是一塊文本。當執行一個非移動指令時,指令會被執行到這塊高亮的區域上。Vim的"文本對象"也能和移動指令一樣用在這個模式中。
  • 選擇模式(Select mode)
這個模式和無模式編輯器的行為比較相似(Windows标準文本控件的方式)。這個模式中,可以用滑鼠或者光标鍵高亮選擇文本,不過輸入任何字元的話,Vim會用這個字元替換選擇的高亮文本塊,并且自動進入插入模式。
  • 指令行模式(Command line mode)
在指令行模式中可以輸入會被解釋成并執行的文本。例如執行指令(

:

鍵),搜尋(

/

?

鍵)或者過濾指令(

!

鍵)。在指令執行之後,Vim傳回到指令行模式之前的模式,通常是普通模式。
  • Ex模式(Ex mode)
這和指令行模式比較相似,在使用

:visual

指令離開Ex模式前,可以一次執行多條指令。

這其中我們常用到就是普通模式、插入模式和指令行模式,本課程也隻涉及這三個常用模式的内容

2.三種常用模式的切換

vim啟動進入普通模式,處于插入模式或指令行模式時隻需要按

Esc

或者

Ctrl+[

(這在vim課程環境中不管用)即可進入普通模式。普通模式中按

i

(插入)或

a

(附加)鍵都可以進入插入模式,普通模式中按

:

進入指令行模式。指令行模式中輸入

wq

回車後儲存并退出vim。

3.進入vim

使用vim指令進入vim界面:

vim後面加上你要打開的已存在的檔案名或者不存在(則作為建立檔案)的檔案名。 打開Xfce終端,輸入以下指令

$ vim practice_1.txt
           

直接使用vim也可以打開vim編輯器,但是不會打開任何檔案。

$ vim
           

進入指令行模式後輸入

:e 檔案路徑

 同樣可以打開相應檔案。

遊标移動:

在進入vim後,按下

i

鍵進入插入模式。在該模式下您可以輸入文本資訊,下面請輸入如下三行資訊:

12345678
abcdefghijk
shiyanlou.com
           

Esc

進入普通模式,在該模式下使用方向鍵或者

h

,

j

k

l

鍵可以移動遊标。

按鍵 說明

h

l

右(小寫L)

j

k

w

移動到下一個單詞

b

移動到上一個單詞

請嘗試在普通模式下使用方向鍵移動光标到

shiyanlou

這幾個字母上面

4.插入模式

在普通模式下使用下面的鍵将進入插入模式,并可以從相應的位置開始輸入

指令

i

在目前光标處進行編輯

I

在行首插入

A

在行末插入

a

在光标後插入編輯

o

在目前行後插入一個新行

O

在目前行前插入一個新行

cw

替換從光标所在位置後到一個單詞結尾的字元

請嘗試不同的從普通模式進入插入模式的方法,在最後一行shiyanlou前面加上

www.

,注意每次要先回到普通模式才能切換成以不同的方式進入插入模式

5.儲存文檔

指令行模式下儲存文檔:

儲存文檔從普通模式輸入

:

進入指令行模式,輸入

w

回車,儲存文檔。輸入

:w 檔案名

可以将文檔另存為其他檔案名或存到其它路徑下

6.退出vim

指令行模式下退出vim:

從普通模式輸入

:

wq

回車,儲存并退出編輯

以下為其它幾種退出方式:

:q!

強制退出,不儲存

:q

退出

:wq!

強制儲存并退出

:w <檔案路徑>

另存為

:saveas 檔案路徑

:x

儲存并退出

:wq

2.普通模式下退出vim

普通模式下輸入

Shift+zz

即可儲存退出vim

7.删除文本

1.普通模式下删除vim文本資訊

進入普通模式,使用下列指令可以進行文本快速删除:

x

删除遊标所在的字元

X

删除遊标所在前一個字元

Delete

x

dd

删除整行

dw

删除一個單詞(不适用中文)

d$

D

删除至行尾

d^

删除至行首

dG

删除到文檔結尾處

d1G

删至文檔首部

除此之外,你還可以在指令之前加上數字,表示一次删除多行,如:

2dd

表示一次删除2行

實驗二.Vim文檔編輯

一、vim重複指令

1.重複執行上次指令

在普通模式下

.

(小數點)表示重複上一次的指令操作

拷貝測試檔案到本地目錄

$ cp /etc/protocols .

打開檔案進行編輯

$ vim protocols

x

,删除第一個字元,輸入

.

(小數點)會再次删除一個字元,除此之外也可以重複

dd

的删除操作

2.執行指定次數相同的指令

進入普通模式輸入

N<command>

,N表示重複後面的次數,下面來練習以下:

打開檔案檔案進行編輯

$ vim protocols

下面你可以依次進行如下操作練習:

  • 輸入

    10x

    ,删除10個連續字元
  • 3dd

    ,将會删除3行文本

在普通模式下,你還可以使用

dw

daw

(delete a word)删除一個單詞,是以你可以很容易的聯想到

dnw

(n替換為相應數字)表示删除n個單詞

二、遊标的快速跳轉

普通模式下,下列指令可以讓光标快速調轉到指定位置,我們分别讨論快速實作行間跳轉和行内跳轉

1.行間跳轉

nG

(n Shift+g)
遊标移動到第 n 行(如果預設沒有顯示行号,請先進入指令模式,輸入

:set nu

以顯示行号)

gg

遊标移動到到第一行

G

(Shift+g)
到最後一行

還是來練習一下吧:

使用vim打開練習文檔

$ vim protocols

依次進行如下操作練習:

  • 快速跳轉到第9行,然後将其該行删除
  • 回到第一行,向下删除8行
  • 跳轉到文檔末,然後删除該行

小技巧:你在完成依次跳轉後,可以使用

Ctrl+o

快速回到上一次(跳轉前)光标所在位置,這個技巧很實用,比如當你在寫代碼時,忽然想起有個bug,需要修改,這時候你跳過去改好了,隻需要按下

Ctrl+o

就可以回到你之前的位置。vim中會用很多類似的小技巧就等着你去發掘。

2.行内跳轉

普通模式下使用下列指令在行内按照單詞為機關進行跳轉

w

到下一個單詞的開頭

e

到下一個單詞的結尾

b

到前一個單詞的開頭

ge

到前一個單詞的結尾

^

到行頭

$

到行尾

f<字母>

向後搜尋<字母>并跳轉到第一個比對的位置(非常實用)

F<字母>

向前搜尋<字母>并跳轉到第一個比對的位置

t<字母>

向後搜尋<字母>并跳轉到第一個比對位置之前的一個字母(不常用)

T<字母>

向前搜尋<字母>并跳轉到第一個比對位置之後的一個字母(不常用)

三、複制粘貼和剪切

1.複制及粘貼文本

  •  普通模式中使用

    y

    複制
    • 普通模式中,

      yy

      複制遊标所在的整行(

      3yy

      表示複制3行)
    • y^

       複制至行首,或

      y0

      。不含光标所在處字元。
    • y$

       複制至行尾。含光所在處字元。
    • yw

       複制一個單詞。
    • y2w

       複制兩個單詞。
    • yG

       複制至文本末。
    • y1G

       複制至文本開頭。
  • p

    粘貼
    • p

      (小寫)代表粘貼至光标後(下)
    • P

      (大寫)代表粘貼至光标前(上)

$ vim protocols

2.剪切及粘貼

前面講得

dd

删除指令就是剪切,你每次

dd

删除文檔内容後,便可以使用

p

來粘貼,這一點可以讓我們實作一個很爽快的功能——交換上下行:

ddp

,就這麼簡單,即實作了快速交換光标所在行與它下面的行

實驗三.查找替換

一、字元的替換及撤銷(Undo操作)

1.替換和撤銷(Undo)指令

替換和Undo指令都是針對普通模式下的操作

r

+<待替換字母>
将遊标所在字母替換為指定字母

R

連續替換,直到按下

Esc

cc

替換整行,即删除遊标所在行,并進入插入模式

cw

替換一個單詞,即删除一個單詞,并進入插入模式

C

(大寫)
替換遊标以後至行末

~

反轉遊标所在字母大小寫

u

{n}
撤銷一次或n次操作

U

撤銷目前行的所有修改

Ctrl+r

redo,即撤銷undo的操作

打開檔案進行編輯:

$ vim practice_2 # 輸入以下文本 www.shiyanlou.com

然後依次進行如下操作

  • 11G

    ,跳轉到11行
  • 輸入fa跳轉到第一個

    a

    字元
  • r

    ,并且輸入b,a字元被b字元替換(實用)
  • R

    替換字元,輸入新字元串,輸入完按ESC回到普通模式(實用)
  • cc

    替換整行字元,輸入新字元串,輸入完按ESC回到普通模式
  • cw

     替換一個英文字(word),輸入完按ESC回到普通模式(實用)
  • ~

    ,翻轉遊标所在字元的大小寫
  • C

     替換至行尾,即遊标所在處以後的字都會被替換,輸入完按ESC回到普通模式
  • u

     撤銷上一次的操作

二、快速縮進

1.使用指令進行快速調整縮進操作

這一小節學習如何在vim中進行快速縮進,縮進操作均在普通模式下有效

$ vim protocols

  • 15G

    ,跳轉到15行
  • >>

     整行将向右縮進(使用,用于格式化代碼超爽)
  • <<

     整行向左回退
  • :

    進入指令行模式下對

    shiftwidth

    值進行設定可以控制縮進和回退的字元數

2.shiftwidth指令

shiftwidth

指令是指上一節

>>

指令産生的縮進(可以簡寫成

sw

) 普通模式下輸入

:

shiftwidth

值進行設定可以控制縮進和回退的字元數 擷取目前的設定值

:set shiftwidth?

設定縮進為10個字元

:set shiftwidth=10

ESC

回到普通模式,再次嘗試

>>

看縮進量是否變化

3.調整文本位置

指令行模式下輸入

:ce

(center)指令使本行内容居中

:ce

:ri

(right)指令使本行文本靠右

:ri

指令行模式下輸入:

le

(left)指令使本行内容靠左

:le

三、查找

1.快速查找

/

然後鍵入需要查找的字元串 按回車後就會進行查找。 

/

功能相同,隻不過

是向上而

/

是向下查找。 進入查找之後,輸入

n

N

可以繼續查找 

n

表示繼續查找,

N

反向查找

2.快速查找練習

使用vim打開檔案進行編輯

$ vim protocols

  • /icmp

    查找字元串icmp
  • n

    查找下一個icmp
  • ?tcp

    向上查找字元串tcp
  • N

    查找上一個出現的tcp

3.進階查找

  • \*

    尋找遊标所在處的單詞
  • \#

    同上,但 

    \*

     是向前(上)找,#則是向後(下)找
  • g\*

    \*

     ,但部分符合該單詞即可
  • g\#

    \#

以上查找

n

N

 的繼續查找指令依然可以用

實驗四.進階功能入門

一、多檔案編輯

1.使用vim編輯多個檔案

編輯多個檔案有兩種形式,一種是在進入vim前使用的參數就是多個檔案。另一種就是進入vim後再編輯其他的檔案。 同時建立兩個新檔案并編輯

$ vim 1.txt 2.txt

預設進入

1.txt

檔案的編輯界面

  • :n

    編輯2.txt檔案,可以加

    !

    :n!

    強制切換,之前一個檔案的輸入沒有儲存,僅僅切換到另一個檔案
  • :N

    編輯1.txt檔案,可以加

    !

    :N!

    強制切換,之前檔案内的輸入沒有儲存,僅僅是切換到另一個檔案

2.進入vim後打開新檔案

  • :e 3.txt

     打開新檔案3.txt
  • :e#

     回到前一個檔案
  • :ls

    可以列出以前編輯過的文檔
  • :b 2.txt

    (或者編号)可以直接進入檔案2.txt編輯
  • :bd 2.txt

    (或者編号)可以删除以前編輯過的清單中的檔案項目
  • :e! 4.txt

    ,新打開檔案4.txt,放棄正在編輯的檔案
  • :f

     顯示正在編輯的檔案名
  • :f new.txt

    ,改變正在編輯的檔案名字為new.txt

3.恢複檔案

如果因為斷電等原因造成文檔沒有儲存,可以采用恢複方式,

vim -r

進入文檔後,輸入

:ewcover 1.txt

來恢複

$ vim -r 1.txt

二、可視模式

1.可視模式指令簡介

  • 在普通模式下輸入

    v

    (小寫),進入字元選擇模式,就可以移動光标,光标走過的地方就會選取。再次按下v會後就會取消選取。
  • Shift+v

    (小寫),進入行選擇模式,按下V之後就會把整行選取,您可以上下移動光标選更多的行,同樣,再按一次

    Shift+v

    就可以取消選取。
  • 在普通模式下輸入 

    Ctrl+v

    (小寫),這是區域選擇模式,可以進行矩形區域選擇,再按一次

    Ctrl+v

    取消選取。
  • d

    删除選取區域内容
  • y

    複制選取區域内容

2.可視模式指令練習

拷貝練習檔案到目前目錄

$ cp /etc/protocols .

打開練習檔案

$ vim protocols

  • 9G

    跳轉到第9行,輸入

    Shift+v

    (小寫V),進入可視模式進行行選擇,選中5行,按下

    >>

    縮進,将5行整體縮進一個

    shiftwidth

  • Ctrl+v

    (小寫v),進入可視模式進行矩形區域選擇,選中第一列字元然後

    x

    删除整列

三、視窗操作

1.視窗操作簡介

vim可以在一個界面裡打開多個視窗進行編輯,這些編輯視窗稱為vim的視窗。 打開方法有很多種,例如可以使用在指令行模式下輸入

:new

 打開一個新的vim視窗,并進入視窗編輯一個新檔案(普通模式下輸入

Ctrl+w

也可以,但是

Ctrl+w

在chrome下會與chrome關閉标簽頁的快捷鍵沖突,是以使用該快捷鍵你可以在IE或其它浏覽器進行練習),除了

:new

指令,下述列舉的多種方法也可以在指令模式或普通模式下打開新的視窗:

  • :sp 1.txt

     打開新的橫向視窗來編輯1.txt
  • :vsp 2.txt

     打開新的縱向視窗來編輯1.txt
  • 普通模式下

    Ctrl-w s

     将目前視窗分割成兩個水準的視窗
  • Ctrl-w v

     将目前視窗分割成兩個垂直的視窗
  • Ctrl-w q

     即 :q 結束分割出來的視窗。如果在新視窗中有輸入需要使用強制符!即:q!
  • Ctrl-w o

     打開一個視窗并且隐藏之前的所有視窗
  • Ctrl-w j

     移至下面視窗
  • Ctrl-w k

     移至上面視窗
  • Ctrl-w h

     移至左邊視窗
  • Ctrl-w l

     移至右邊視窗
  • Ctrl-w J

     将目前視窗移至下面
  • Ctrl-w K

     将目前視窗移至上面
  • Ctrl-w H

     将目前視窗移至左邊
  • Ctrl-w L

     将目前視窗移至右邊
  • Ctrl-w -

     減小視窗的高度
  • Ctrl-w +

     增加視窗的高度

2.視窗操作練習

$ vim 1.txt

  • :new

     打開一個新的vim視窗
  • :sp 2.txt

     打開新的橫向視窗來編輯2.txt
  • :vsp 3.txt

     打開新的橫向視窗來編輯3.txt
  • 如果使用非chrome浏覽器可以使用

    Ctrl+w

    進行視窗間的跳轉
  • 分别在不同視窗的指令行模式下輸入

    :q!

    退出多視窗編輯

四、文檔加密

1.建立加密文檔

$ vim -x file1

輸入您的密碼 确認密碼 這樣在下一次打開時,vim就會要求你輸入密碼

五、在vim執行外部指令

在指令行模式中輸入

!

可以執行外部的shell指令

  • :!ls

     用于顯示目前目錄的内容
  • :!rm FILENAME

    用于删除名為 FILENAME 的檔案
  • :w FILENAME

    可将目前 VIM 中正在編輯的檔案另存為 FILENAME 檔案

六、幫助系統

1.vim中的檢視幫助

  • 普通模式下按

    F1

    打開

    vim

    自己預設的幫助文檔
  • :h shiftwidth

     打開名為

    shiftwidth

    的幫助檔案
  • :ver

     顯示版本及參數

七、功能設定

1.vim的功能設定

可以在編輯檔案的時候進行功能設定,如指令行模式下輸入

:set nu

(顯示行數),設定值退出vim後不會儲存。要永久儲存配置需要修改vim配置檔案。 vim的配置檔案

~/.vimrc

,可以打開檔案進行修改,不過務必小心不要影響vim正常使用

2.擷取目前的設定

  • :set

    :se

    顯示所有修改過的配置
  • :set all

     顯示所有的設定值
  • :set option?

     顯示option的設定值
  • :set nooption

     取消當期設定值

3.set功能的說明

  • :set autoindent(ai)

     設定自動縮進
  • :set autowrite(aw)

     設定自動存檔,預設未打開
  • :set background=dark

    light

    ,設定背景風格
  • :set backup(bk)

     設定自動備份,預設未打開
  • : set cindent(cin)

     設定C語言風格縮進

Linux

實驗一.Linux基礎

1.環境介紹:LX終端,Gvim編輯器

               使用GVim編輯器輸入實驗所需的代碼及檔案,使用LX終端(LXTerminal)運作所需指令進行操作

2.元知識(思考)&硬知識(重點)&軟知識(經驗)

3.Linux在#或$符後面去輸入指令,有的時候指令後面還會跟着

選項

(options)或

參數

(arguments)。即Linux中指令格式為:

資訊安全系統設計基礎第三周學習總結

選項

是調整指令執行行為的開關,

選項

不同決定了指令的顯示結果不同。

參數

是指指令的作用對象。

如ls指令,

ls

ls .

顯示是目前目錄的内容,這裡“.”就是參數,表示目前目錄,是預設的可以省略。我們可以用

ls -a .

顯示目前目錄中的所有内容,包括隐藏檔案和目錄。其中“-a” 就是選項,改變了顯示的内容

4.man指令

man

是manul的縮寫,我們可以通過man man來檢視

man

的幫助

幫助文檔包含:

資訊安全系統設計基礎第三周學習總結
資訊安全系統設計基礎第三周學習總結

man

有一個

-k

 選項用起來非常好,這個選項讓你學習指令,程式設計時有了一個搜尋引擎,可以舉一反三。 我們通過一個例子來說明,比如資料結構中學過排序(sort),我不知道C語言中有沒有完成這個功能的函數,可以通過“man -k sort”來搜尋,因為是找C庫函數,我們關注帶3的,qsort好像是個好選項,如下圖

資訊安全系統設計基礎第三周學習總結

結合後面學習的grep 指令和管道,可以多關鍵字查找:

資訊安全系統設計基礎第三周學習總結

5.cheat指令

cheat 指令不是Linux自帶的

cheat指令是在GNU通用公共許可證下,為Linux指令行使用者發行的互動式備忘單應用程式。它提供顯示Linux指令使用案例,包括該指令所有的選項和簡短但尚可了解的功能。

使用cheat指令作弊是可以的。

6.其他核心指令

和查找相關的核心指令還有

find

locate

grep

whereis

which

,其中:

  • find查找一個檔案在系統中的什麼位置,locate是神速版本的find(Windows下有個Everything工具和locate類似).
  • grep 可以對檔案全文檢索,支援正規表達式,正規表達式也是一個重要的元知識。
  • whereis,which告訴你使用的指令工具裝在什麼地方。

上面的指令包括man -k有一個共同特點就是基于“搜尋”

實驗二.Linux下C語言開發基礎

1.Vim

VIMTUTOR是個實踐教程,通過實踐30分鐘讓你對VIM編輯器入門,隻要在指令行中輸入vimtutor,然後跟着教程練習就可以了。如下圖:

資訊安全系統設計基礎第三周學習總結

程式員有幾個鍵提示一下:

  • 大寫“K”可以用來查找函數的幫助資訊:檢視 man page,指令模式下,将光标放在函數名上,按"K"可以直接察看 man page。
  • 幾個設定

:set nu 顯示行号

:set ai 自動縮行

:set ts=4 設定一個 TAB 鍵等于幾個空格

  • 移動光标

[[ 轉到上一個位于第一列的"{"

]] 轉到下一個位于第一列的"{"

{ 轉到上一個空行

} 轉到下一個空行

gd 轉到目前光标所指的局部變量的定義

3.gcc

GCC編譯代碼的過程如下

資訊安全系統設計基礎第三周學習總結

我們可以把編譯過程分成四步,以編譯hello.c生成可執行檔案hello為例

  • 預處理:gcc –E hello.c –o hello.i;gcc –E調用cpp
  • 編 譯:gcc –S hello.i –o hello.s;gcc –S調用ccl
  • 彙 編:gcc –c hello.s –o hello.o;gcc -c 調用as
  • 鍊 接:gcc hello.o –o hello ;gcc -o 調用ld

編譯過程比較難記,我們簡化一下,前三步,GCC的參數連起來是“ESc”,相應輸入的檔案的字尾是“iso”,這樣記憶起來就容易多了。

4.gdb

建議使用CGDB,比GDB好用,熟悉VC的調試方式,可以使用DDD。 注意使用GCC編譯時要加“-g”參數。 參考gdb參考卡GDB最基本的指令有:

  • gdb programm(啟動GDB)
  • b 設斷點(要會設4種斷點:行斷點、函數斷點、條件斷點、臨時斷點)
  • run 開始運作程式
  • bt 列印函數調用堆棧
  • p 檢視變量值
  • c 從目前斷點繼續運作到下一個斷點
  • n 單步運作
  • s 單步運作
  • quit 退出GDB

問題:GDB的n(next)指令讓GDB執行下一行,然後暫停。 s(step)指令的作用與此類似,隻是在函數調用時step指令會進入函數,那麼實際使用中應該優先選用哪個?為什麼?

其他幾個我認為應該掌握的調試指令有:

  • display 跟蹤變量值的改變
  • until 跳出循環
  • finish 跳出函數
  • help 幫助

Vi

  • Linux下C語言程式設計環境概述

(1)編輯器

Linux中最常用的編輯器有vi和emacs

(2)編譯連結器

編譯:源代碼轉化生成可執行代碼的過程,包括詞法,文法,語義的分析,中間代碼的生成和優化,符号表的管理和出錯處理

Linux最常用的編譯器是gcc編譯器

(3)調試器  gdb

(4)項目管理器  make

  • 編輯器vi

(1)模式

三種模式:指令行模式,插入模式,底行模式

指令行模式:最初進入的模式,可以上下移動光标進行“删除字元”或“整行删除”“複制”“粘貼”,但不能編輯文字

插入模式:可以文字編輯,Esc可回到指令行模式

底行模式:光标位于模式的底行,可以檔案儲存或退出,也可以設定編輯環境如尋找字元串,列出行号

(2)基本流程

進入vi,指令行下輸入“vi hello”進入指令行模式,光标位于螢幕上方

指令行輸入i進入插入模式,可輸入文字

插入模式中按Esc轉入指令行模式,底行中輸入“:wq”(存盤退出)進入底行模式

(看模式,注意螢幕最下方即可)

  • 編輯器emacs

啟動:指令行輸入“emacs”或者從“程式設計”emacs打開

  • 運作可執行程式之前,需要注冊動态庫的路徑名

(1)修改/etc/ld.so.conf檔案

(2)修改LD_LIBRARY_PATH環境變量

(3)将庫檔案直接複制到/lib或/usr/lib目錄下

  • 靜态庫和動态庫的差別

靜态庫将需要的部分直接編譯入可執行檔案中,動态庫隻有當使用它的程式執行時才被連結使用

一個動态庫可以被多個程式使用故可稱為共享庫,靜态庫會整合到程式中是以程式執行時不用加載靜态庫

連結到動态庫會使使用者的程式輕便,易于更新但難以部署

  • 優化選項:

通過“-On”控制優化代碼的生成:

-O1:線程調準和延遲退棧

-O2:還有處理指令排程

-O3:還包括循環展開和其他與處理器特性相關的優化工作

調試時不優化,最終發行時優化

  • gdb

(1)gdb使用流程

-g:使編譯出的可執行代碼中包含調試資訊

啟動gdb進行調試:

gdb調試的是可執行檔案不是.c源代碼

檢視檔案:在gdb中鍵入“l”就可以檢視載入的檔案

設定斷點:在“b”後加上對應行号,運作到該行之前暫停

檢視斷點情況:info b

在斷點鍵入“bt”即可查到調用函數(堆棧)的情況

運作代碼:鍵入“r”預設從首行開始運作;r後加行号指定從該行開始運作

檢視變量值:鍵入“p”加變量值

單步運作:“n”或“s”(s會進入函數而n不會進入函數)

恢複程式運作:“c”

gdb基本指令

  • b 設斷點(要會設4種斷點:行斷點、函數斷點、條件斷點、臨時斷點)
  • run 開始運作程式
  • bt 列印函數調用堆棧
  • p 檢視變量值
  • c 從目前斷點繼續運作到下一個斷點
  • n 單步運作
  • s 單步運作
  • quit 退出GDB

修改運作參數相關指令:set 變量=設定值

基本調試指令:

display 跟蹤變量值的改變

until 跳出循環

finish 跳出函數

help 幫助

  • make工程管理器:自動識别更新了的檔案代碼

make格式:    make target

模式規則:規則中的相關檔案前必須用“%”标明