1. 程式人生 > >Liunx:環境基礎開發工具使用總結(基本操作命令及使用詳解)

Liunx:環境基礎開發工具使用總結(基本操作命令及使用詳解)

目錄

1vim的基本概念

2vim的基本操作

3vim正常模式命令集

1:插入模式

2:移動游標

3:刪除文字

4:複製

5:替換

6:撤銷

7:更改

8:跳到指定行

4vim末行模式命令集

分屏操作

編譯器的使用

1:背景知識

2:gcc如何完成

偵錯程式gdb的使用

開始使用

自動化構建工具make/Makefile

背景

原理

進度條程式

軟體管理器yum

有那些軟體包

如何安裝

如何解除安裝


1vim的基本概念

vim基本分三種模式:

  1. 正常模式/命令模式(Normal mode):控制螢幕游標的移動,字元,字或行的刪除,移動複製某段區域
  2. 插入模式(Insert mode):只有在Insert mode模式下,才可以輸入文字,按[esc]可回到命令列模式
  3. 末行模式(last line mode):檔案的儲存或退出,也可以進行替換,字串查詢,列出行號等操作,在命令模式下,shift+:進入該模式

要檢視所有的模式:help vim-modes

一共有12中模式:six BASIC modes 和 six ADDITIONAL modes

2vim的基本操作

  1. vim + 檔名:進入全屏編輯畫面(正常模式),需要切換到[插入模式]才能輸入文字
  2. [正常模式]切換到[插入模式]:     1:---[a]  2:---[i]   3---[o].
  3. [插入模式]切換到[正常模式]:      [esc]
  4. [正常模式]切換到[末行模式]:      [shit + :]
  5. vim儲存及退出:                       w:儲存當前檔案      wq儲存並退出     q!不儲存強制退出   wq!儲存強制退出
  6. 程式碼縮排對齊:                       [gg = G]
  7. 程式碼遮蔽                                 [ctrl + v ]切換為檢視模式,[r]替換為‘/’

3vim正常模式命令集

1:插入模式

  • 按[i] 切換插入模式從游標當前位置開始輸入
  • 按[a] 進入插入模式後,從游標所在位置的下一個位置開始輸入
  • 按[o]  進入插入模式,是插入新的一行,從行首開始輸入
  • 從插入模式進入命令模式[esc],按兩下直接從底行模式回到正常模式

2:移動游標

  1. [h] [j] [k] [l] 分別是控制游標左,下,上,右
  2. [G]:移動到文章最後
  3. [w]:游標跳到下個字的開頭
  4. [e]:游標跳到下個字的字尾
  5. [b]:游標回到上個字的開頭
  6. [gg]:進入文字開始
  7. [shift + g]:進入文字末端
  8. [ctrl + b]:螢幕往後移動一頁
  9. [ctrl + f]:螢幕往前移動一頁
  10. [ctrl + u]:螢幕往後移動半頁
  11. [ctrl + d]:螢幕往前移動半頁

3:刪除文字

  1. [x]:每按一次刪除游標所在位置的一個字元
  2. [#x]:刪除游標所在位置後面包含自己在內的#個字元
  3. [X]:大寫X,表示刪除游標所在位置前一個字元
  4. [#X]:刪除不包含游標在內的前面#個字元
  5. [dd]:刪除游標所在行
  6. [#dd]:刪除游標開始的#行

4:複製

  1. [yw]:將游標所在之處到字尾的字元複製到緩衝區
  2. [#yw]:複製#個字到緩衝區
  3. [yy]:複製游標所在行
  4. [#yy]:從游標開始複製#行
  5. [p]:將緩衝區的字元貼到游標所在位置(所有與y有關的複製命令都必須與p配合)

5:替換

  1. [r]:替換游標所在處字元
  2. [R]:替換游標所到之處的字元,直到[esc]為止

6:撤銷

  1. [u]:回到上一個操作
  2. [ctrl + r]:撤銷的恢復

7:更改

  1. [cw]:更改游標所到處的字到字尾出
  2. [c#w]:表示更改#個字

8:跳到指定行

  1. [#G]:表示游標移動到#行
  2. [ctrl + g]:列出游標所在行佔比例

4vim末行模式命令集

  1. [set nu]:列出行號
  2. [#]:冒號後輸入一個數字按回車,就會跳到對應行
  3. [/關鍵字]:先按[/]在輸入想尋找的字元,如果第一次不是要找的,可以按[n]往後尋找
  4. [?關鍵字]:先按[?]在輸入想尋找的字元,如果第一次不是要找的,可以按[n]往前尋找

分屏操作

同時上下分屏(不管檔案存在不存在):

1:vim -on test1.c test2.c

2:split 檔名(已經開啟一個檔案時,在增加一個檔案)

同時左右分屏(不管檔案存在不存在):

1:vim -On test1.c test2.c (大寫O)

2:vnew 檔名(已經開啟一個檔案時,在增加一個檔案)

方向控制

ctrl + w + l   右

ctrl + w + h  左

ctrl + w + k  上

ctrl + w + j  下

(如果分屏少直接ctrl + w + w切換)

編譯器的使用

1:背景知識

  1. 預處理:進行巨集替換
  2. 編譯:生成彙編
  3. 彙編:生成機器可識別程式碼
  4. 連結:生成可執行檔案或庫檔案

2:gcc如何完成

格式:gcc [選項] 要編譯檔案 [選項]  [目標檔案]

(!gcc:上一次執行的gcc)

預處理:

  1.  預處理主要功能是巨集定義,檔案包含,條件編譯,去註釋等
  2. 預處理指令以#開頭的程式碼行
  3. 例項:gcc -E hello.c -o hello.i
  4. -E:讓gcc在預處理之後停止編譯過程
  5. -o:是指目標檔案,-i為已經與預處理過的c程式

編譯

  1. 在這個階段,gcc首先檢查程式碼的規範性,是否有語法錯誤等,已確定程式碼實際要做的工作,檢查無誤後,gcc把程式碼翻譯成組合語言
  2. -S:可以檢視,只編譯而不彙編

彙編

  1. 彙編階段是把編譯階段生成的.s轉換為目標檔案
  2. 生成機器可識別程式碼
  3. -c:可以檢視已轉化為.o 的二進位制目的碼

連結

  1. 成功編譯後進入連結階段,刪除可執行檔案
  2. 實列:gcc hello.o hello

靜態庫與動態庫:

靜態庫:編譯時把程式碼連結到可執行檔案中。程式執行的時候將不再需要靜態庫

動態庫:程式執行時才去連結動態庫的程式碼,多個程式可以共享使用庫的程式碼

gcc選項 
1、無選項編譯連結 
例:命令:gcc test.c

//會預設生成a.out可執行程式 
2、-E: 進行預處理和編譯,生成彙編檔案。 
命令:gcc -E test.c

//會生成test.i檔案

3、-S: 進行預處理,編譯,彙編等步驟,生成“.s”檔案 
例:命令:gcc -S test.c

//會生成test.s檔案

4、-c: 會直接生成二進位制目標檔案 
例:命令:gcc -c test.c

//會生成test.o檔案

5、-o :對生成的目標進行重新命名 
例:命令:gcc -o test test.c

//會生成名字是test可執行檔案而不是預設的a.out

6、-pipe: 使用管道代替編譯中的臨時檔案 
例:命令:gcc -pipe -o test test.c

7、-include file :包含某個程式碼。相當於在檔案中加入#include 
例:gcc test.c -include /root/file.h

8、-C:在預處理的時候不刪除註釋資訊,一般和-E使用。

9、-llibrary:定製編譯的時候使用的庫 
例:gcc -lpthread test.c //在編譯的時候要依賴pthread這個庫

10、-Ldir:定製編譯的時候搜尋庫的路徑。如果是自己定製的庫,可以用它來定製搜尋目錄,否則編譯器只在標準庫目錄裡面找,dir就是目錄的名字

11、-O0(字母o和數字0):沒有優化

       -O1:-O1位預設值

       -O2:二級優化 

       -O3:最高階優化 
級別越大優化越好,但編譯時間邊長。

偵錯程式gdb的使用

要使用gdb除錯,必須先在原始碼生成二進位制程式碼時,加上-g選項(在生成可執行程式時,在可執行程式新增可調式資訊)

實列:gcc -g test.c -o test

開始使用

  1. 開始除錯:gdb + 檔名,結束除錯:quit 或 ctrl + d
  2. list/l 行號:每次10行顯示程式碼
  3. list/l 函式名:列出函式的程式碼
  4. run/r:執行程式(需要在後面新增命令列引數 r -a 引數或是set + 引數)
  5. start:開始除錯(逐步)
  6. next/n:每次執行一句,不進入函式
  7. step/s:進去函式呼叫
  8. break/b  行號:在某一行設定斷點
  9. break/b 函式名:在某個函式開頭設定斷點
  10. info break/i b:檢視斷點資訊
  11. finish:執行到當前函式返回,然後停下來等待命令
  12. continue/c:從當前位置開始連續執行程式
  13. delete breakpoints:刪除所有斷點
  14. d n:刪除序號為n的斷點
  15. dispaly 變數名:跟蹤檢視一個變數,每次停下來都顯示它的值
  16. p var:列印var變數的值
  17. bt:列印函式呼叫棧
  18. watch var :監控變數var的改變(變數改變時停下)

自動化構建工具make/Makefile

背景

  • make是一條命令,Makefile是一個檔案,兩個搭配使用
  • make是一個解釋Makefile中指令的命令工具
  • 一個工程中的原始檔不計其數,其按型別,功能,模組分別放在若干個目錄中,Makefile定義了一系列規則來指定,哪些檔案需要先編譯,後編譯,重新編譯,甚至於進行更復雜的過程操作
  • 會不會寫Makefile,從側面說明一個人是否具有完成大專案的能力
  • Makefile帶來的好處就是“自動化編譯”,一旦寫好只需要一個make命令,整個工程就能完全自動編譯,極大提高了效率
#表示註釋
#[要生成的目標檔名稱]:[依賴檔案]
#[製表符Tab]如何通過依賴檔案物件生成目標檔案的編譯命令
all:test test1
test:test.c tmp.c
gcc test.c tmp.c -o test
test1:test.c tmp.c
gcc test.c tmp.c -o test1
#永遠只生成第一個物件,生成後則退出,因此如果要生成多個物件,就需要在前邊一個包含所有要生成的物件
#幾個預定義變數
# [email protected] 代表要生成的目標物件
#  $^ 代表依賴物件
#  $< 代表所有檔案中的第一個
#   .PHONY   宣告偽物件,這個偽物件每次都需要生成
.PHONY :test test1
all:test test1
test:test.c tmp.c
gcc $^ -o [email protected]
test1:test.c tmp.c
gcc $< -o [email protected]

依賴關係:  .c 檔案依賴.i檔案,

                   .i檔案 依賴.s檔案,

                  .s檔案 依賴 .o檔案

原理

  1. make會在當前目錄下找名字叫“makefile”或“Makefile”的檔案
  2. 如果找到,它會找檔案中的第一個目標檔案,並把它作為最終的目標檔案
  3. 如果不存在那麼它就會執行後面所定義的命令來生成這個檔案
  4. 如果所依賴的.o檔案不存在,那麼make會在當前檔案中找目標為.o檔案的依賴性,再根據規則生成一個.o檔案
  5. .c和.h檔案肯定存在,於是make會生成.o檔案,然後在用.o檔案宣告執行檔案
  6. 這就是整個依賴性,make會一層一層去找檔案的依賴關係,直到最終編譯出第一個目標檔案
  7. 在尋找過程中,如果出現錯誤,比如最後被依賴的檔案找不到,make就會直接退出,並且報錯。而對於所以的命令錯誤,或編譯不成功,make根本不理

進度條程式

  1 #include<stdio.h>
  2 #include<unistd.h>
  3 #include<string.h>
  4 int main()
  5 {
  6     int i = 0;
  7     char buff[102] = {0};//初始化為0,保證字串長度不會再改變
  8     const char *cycle = "|/-\\";
  9     while(i <= 100)
 10     {
 11     printf("[%-100s][%d%%][%c]\r",buff,i,cycle[i%5]);//“\r”回車符,與換行符區別是:不換行,游標跳的本行的行首然後開始覆蓋
 12     fflush(stdout);//立即重新整理緩衝區,可以使進度條走的很流暢
 13     buff[i++] = '#';
 14     usleep(100000);
 15     }
 16     printf("\n");
 17     return 0;
 18 }

軟體管理器yum

有那些軟體包

  1. 在Linux下安裝軟體太麻煩,所以有人提前編譯好,做成軟體包放在一個伺服器上,可以直接進行安裝
  2. 軟體包和軟體管理器yum,就好比app和應用商店的關係
  3. yum需要在聯網狀態才能正常工作
yum list | grep gcc

yum list命令可以羅列出一個有那些包,數目非常多,可以使用grep篩選

軟體包名稱 :主版本號,次版本號,程式原始碼發行號,軟體包發行號,主機平臺,cpu構架

如何安裝

sudo yum install 檔名

最後只需要按Y確定即可

  • 安裝軟體時由於需要向系統目錄寫入內容,所以需要root賬戶,或者sudo才能完成
  • yum安裝只能一個裝完了才能再裝另一個,否則會報錯

如何解除安裝

sudo yum remove 檔名

Y確定即可