有關Linux系統的常用工具介紹
通常,LInux系統中用到的基本工具有Vim編輯器,gcc編譯器等。在本文中我將敘述有關Vim編輯器和gcc編譯器的相關知識。
首先敘述一下Vim編輯器, VIm編輯器一般有13種模式,但常見的只有3種:
(1)插入模式:插入資料,按ESC鍵退出。
(2)普通模式:基本操作,控制螢幕游標的移動、字元、字或行的刪除。
(3)底行模式:檔案儲存或退出,也可以進行檔案替換、字串、列出行號等操作。
Vim編輯器中所有的模式都是圍繞普通模式進行切換,如果不確定當前在什麼模式下,多按幾下esc就回普通模式下。下面介紹一下有關普通模式下的一些基本操作:
(1) 移動游標
h j k l 上下左右
w 向右移動 一個單詞
b 向左移動一個單詞
O S 行首和行尾
gg 移動到文件的行首
Ctrl+f 向下翻頁
Ctrl+b 向上翻頁
(2)複製
yy 複製游標所在行
nyy 從游標所在行開始複製n行
(3) 貼上
p(小寫) 向光標所在行下方貼上
P(大寫) 向光標所在行上方貼上
(4)刪除
(vim中沒有真正的刪除,刪除的資料都放到了剪貼簿)
(5) 剪貼(vim中刪除==剪貼)
dd 刪除游標所在行
ndd 從游標所在行開始刪除向下的n行資料
x 刪除游標所在字元
dw 刪除游標以後的第一個單詞
D 刪除游標所在行,游標以後的資料
(6)其它操作:
u 後退到上一次操作
Ctrl+r 前進到下一次操作
Vim中除了有關普通模式下的操作外,插入模式,普通模式和底行模式下的相互轉換也是其重要操作。下面將一一概述:
(1)普通模式-——>插入模式
i 從游標所在位置開始插入
a 從游標向後移動一個字元的位置開始插入
o 在游標所在的行下方新增一個新行開始插入
I 游標移動到行首開始插入
A 游標移動到行尾開始插入
O 從游標所在行上方新增一個新行開始插入
(2) 普通模式——>底行模式
輸入一個冒號就進入了底行模式
:w 儲存
:q 退出
:wq 儲存並退出
:q! 強制退出(不儲存)
:!pwd 臨時執行一個外部的shell命令,回車返回
(3) 插入模式——>普通模式
esc
而gcc編譯器作為Linux系統中常用的c語言程式碼編譯工具,通常它的工作過程基本可以分為四個階段:
(1)預處理:展開所有程式碼。
(2)編譯: 糾錯,然後將C語言程式碼編譯成彙編程式碼。
(3)彙編: 將彙編程式碼解釋為機器程式碼。
(4)連結:生成可執行的檔案。
與之對應的gcc編譯器常用工具選項包括:
-o 僅用於指定要生成的檔名稱
-E 僅僅執行預處理操作,不會執行編譯及以後的操作
-S 僅僅執行到編譯操作完成,不會進行彙編及以後的操作(包含糾錯功能)
-c 僅僅執行到彙編完成,不會進行後續操作
當代碼經過彙編之後僅僅是將程式碼本身解釋成機器程式碼,此時這個彙編後的程式碼是不完全的,所以也就是一個不完整的可執行程式,這時候需要將printf所在庫檔案連結進來。
一般將庫中所有的程式碼都連結過來就會造成一種情況:當多個程式執行起來,那麼記憶體中將會產生非常多的重複程式碼這時候關於連結就產生了兩種情況:
(1)動態連結:不把庫中的程式碼拿過來,而是僅僅記錄一些程式碼的位置符號資訊在自己的程式碼中,執行的時候才會去找這段程式碼。生成的可執行程式比較小,但是對庫的依賴程度比較高。動態庫連結的是動態庫。
(2)靜態連結:直接將庫中的所有程式碼拿過來寫入到可執行程式中,這樣生成的可執行程式比較大,但是對庫的依賴程度低。靜態庫連結的是靜態庫。
在LInux系統中,gcc通常預設的連結方式是動態連結。彙編之後將所有的.o檔案和所依賴的庫合在一起最終生成一個可執行程式。