目錄
- 1. yum包管理器
- 1.1 yum包管理器是干什么的?
- 1.2 yum的基本使用命令
- 2. Linux開發工具相關
- 2.1 vim編輯器
- 2.1.1 vim是什么?
- 2.1.2 vim的簡單介紹
- 2.1.3 vim的功能按鍵
- 2.1.4 底行模式中常用的指令
- 2.2 gcc/g++編譯器
- 2.2.1 作用
- 2.2.2 命令格式及引數解釋
- 2.2.3 編譯程序及引數使用
- 2.3 gdb除錯工具
- 2.3.1 gdb除錯前的準備
- 2.3.2 gdb除錯的小命令
- 2.3.3 gdb除錯命令的演示
- 2.4 make/makefile自動化構建工具
- 2.4.1 自動化構建是什么
- 2.4.2 makefile檔案怎么寫
- 2.4.3 makefile作業原理
- 2.4.4 內置變數和自定義變數
- 2.4 git代碼管理工具
- 2.4.1 linux下的git工具使用
- 總結
注:以下所有命令執行,都是基于linux系統centos7.5版本下

1. yum包管理器
1.1 yum包管理器是干什么的?
在linux系統中安裝軟體,通常是下載軟體原始碼,并進行編譯得到可執行程式,這種做法過于復雜,所以就有了形同windows的軟體商店,通過商店直接下載軟體包,進行直接安裝,
1.2 yum的基本使用命令
- 羅列liunx下的所有可以下載的軟體包,命令:
yum list,

- 上圖可以看出直接羅列出來軟體實在太多了,難以分辨,所以使用grep篩選出我們想看到的軟體包,命令:
yum list | grep [軟體包名]

- 安裝軟體,命令:
yum install (-y) [軟體包名]
linux中安裝檔案需要向系統目錄中寫入檔案,所以需要使用sudo命令或者切換到root用戶下,
安裝軟體時必須逐個安裝,不能同時安裝多個,
這里以安裝 lrzsz 為例,該軟體是用于windows和遠端linux機器通過xshell傳輸檔案的,

此頁面顯示已經安裝了該軟體,進行的更新操作,
- 卸載軟體
yum remove (-y) [軟體包名稱]
這里以卸載lrzsz為例,

2. Linux開發工具相關
在liunx系統中,我們最常用的功能無疑就是對軟體的開發了,如何進行程式的書寫,程式的編譯,除錯,代碼的管理,將會在下文中詳細介紹以上功能,
2.1 vim編輯器
2.1.1 vim是什么?
vim簡單來說,就是一款編輯器,可以撰寫程式的編輯器,其中可以書寫c/c++等,具有代碼高亮顯示等等一些特性,
2.1.2 vim的簡單介紹
1.vim我們常用的一共有三種模式,分別為命令模式,插入模式,底行模式,
- 命令模式:在此模式下,可以控制螢屏游標的移動,字符、字或行的洗掉,移動復制某區段,或進入插入模式、底行模式下,
- 插入模式:可以進行文字的輸入,按
esc回到命令列模式,該模式使用最為頻繁,在底行模式下按下鍵盤i鍵進入插入模式,- 底行模式:此模式中,可以進行檔案的保存或退出,也可以進行檔案替換、查找字串,列出行號等操作,在命令模式中,
shift + :進入該模式,

2.1.3 vim的功能按鍵
貼一張鍵位圖:

加下來,挑一些常用功能介紹一番,這些功能都是在正常模式下的操作,并且區分大小寫,在vim中最常用的7個功能移動游標、洗掉、復制、粘貼、替換、撤銷、更改,
1.移動游標
?方法一:鍵盤上下左右鍵
?方法二:
| 操作 | 現象 |
|---|---|
| h | 游標左移 |
| l | 游標右移 |
| k | 游標上移 |
| j | 游標下移 |
| gg | 游標快速移動至第一行 |
| G | 游標快速回到最后一行 |
| [num]G | 游標跳轉至num行 |
2.洗掉字符
| 操作 | 現象 |
|---|---|
| x | 向后洗掉游標所在位置的元素 |
| [num]x | 向后洗掉num個字符 |
| X | 向前游標所在洗掉字符 |
| [num]X | 向前洗掉num個字符 |
| dd | 對游標所在行進行剪切 |
| [num]dd | 剪切num行 |
3.復制字符
| 操作 | 現象 |
|---|---|
| yy | 復制游標所在行 |
| [num]yy | 復制游標以下num行 |
4.粘貼
| 操作 | 現象 |
|---|---|
| p | 在游標的下一行進行粘貼 |
| P | 在游標的上一行進行粘貼 |
5.替換
| 操作 | 現象 |
|---|---|
| r | 替換當前游標所在的字符 |
| R | 進入到replace模式,進行替換,esc結束替換 |
6.撤銷
| 操作 | 現象 |
|---|---|
| u | 撤銷上次的操作 |
| ctrl + r | 反撤銷 |
7.更改
| 操作 | 現象 |
|---|---|
| cw | 洗掉當前單次,并進入插入模式 |
2.1.4 底行模式中常用的指令
1.搜索字符
| 操作 | 現象 |
|---|---|
| /[待查找字符] | 向下搜索 |
| ?[待查找字符] | 向上搜索 |
上述操作如果第一次不是想要查找的值可以按 n 繼續查找

2.查找指定字符并全文替換
:%s/[待替換字符]/[替換后字符]/g 引數含義 %s全文替換 g替換當前行所有目標字串
替換前:

替換后:

3.顯示取消行號
| 操作 | 現象 |
|---|---|
| set nu | 顯示行號 |
| set nonu | 取消顯示行號 |
4.批量注釋與批量取消注釋
| 操作 | 現象 |
|---|---|
| ctrl+v -> 選中注釋行(j/k) -> I ->插入注釋符 -> esc | 批量注釋 |
| ctrl+v-> 選中注釋行(j/k/l/h) -> x | 批量取消注釋 |
2.2 gcc/g++編譯器
2.2.1 作用
gcc 用來編譯c語言,g++用來編輯c++,如果提示無法使用該命令,則需要利用上述的yum管理器進行安裝
2.2.2 命令格式及引數解釋
命令格式:gcc/g++ [引數] 編譯的檔案名 [引數] [目標檔案]
| 引數 | 作用 |
|---|---|
| -E | 對檔案進行預處理,生成 .i 檔案 |
| -S | 對檔案進行匯編,生成 .s 檔案 |
| -c | 編譯目標代碼,生成 .o 檔案 |
| -o | 檔案輸出到XX檔案 |
| -g | 編譯最后的引數,可以除錯程式 |
| -static | 對檔案進行靜態編譯 |
| -shared | 動態編譯,不填寫此引數默認為動態編譯 |
2.2.3 編譯程序及引數使用
在liunx編譯中需要經歷4個程序,預處理、編譯、匯編、鏈接,
1.預處理
在預處理階段,主要完成頭檔案展開、宏替換、條件編譯、去注釋等,處理移 # 開頭的所有代碼,
命令格式gcc -E filename.c -o filename.i


2.編譯
生成匯編代碼,在這個階段會進行代碼規范性的檢測,語法語意的檢查,并且編譯為匯編代碼
命令格式:gcc -S filename(.i) -o sort.s


3.匯編
將編譯生成的匯編代碼,轉化為機器碼檔案,生成
.o檔案
命令格式:gcc -c filename.s -o filename.o

4.鏈接
對編譯的機器碼檔案,進行鏈接生成可執行檔案
可以省略上述步驟,直接生成可執行檔案
命令格式:gcc [filename] -o [filename]


注意
在鏈接程序中,分為靜態鏈接和動態鏈接
??靜態鏈接:靜態鏈接的可執行檔案大于動態鏈接生成的可執行檔案,因為在這個程序中在所有依賴檔案全部加入到可執行檔案中,運行時不依賴任何檔案,
??動態鏈接:默認方式為動態鏈接,不將庫檔案加入到程式中,而是在程式運行時動態鏈接所需要的庫檔案,
靜態鏈接與動態鏈接大小對比:

2.3 gdb除錯工具
2.3.1 gdb除錯前的準備
程式的版本共有兩種,分別為debug版本和release版本,debug版本是提供給程式員除錯的程式版本,而release版本是發布程式的版本,而linux默認編譯出來的release版本,所以想要除錯程式必須要在編譯后加上-g引數,
gcc filename.c -o filename -g
2.3.2 gdb除錯的小命令
gdb 可執行檔案進入除錯模式才能有以下的操作,
| 引數 | 作用 |
|---|---|
| l | 顯示當前除錯程式的代碼,一次顯示10行 |
| r | 運行程式,沒有斷點則會一次執行完程式 |
| b 行號 | 在指定行號位置加入斷點 |
| i b | 查看所有斷點資訊 |
| disable 斷點序號 | 禁用斷點 |
| enable 斷點序號 | 啟用斷點 |
| n | 逐程序執行 |
| s | 逐陳述句執行 |
| c | 從當前位置連續執行代碼,直至遇到斷點或程式結束 |
| p 變數名 | 列印指定變數資訊,也可以列印自定義型別變數 |
| bt | 查看呼叫堆疊,從底向上看堆疊資訊 |
| where | 與bt命令相同 |
| q | 退出除錯 |
2.3.3 gdb除錯命令的演示
-
l顯示程式代碼

-
r運行代碼

-
b [行號]對指定行號設定斷點

-
i b查看所有斷點資訊

-
disable 斷點序號

-
enable 斷點序號

-
n逐程序執行
一次性執行完QuicSortNonR()函式

-
s逐陳述句執行
進入到PrintResult()函式體中執行斜體樣式

-
p 變數名

-
bt查看堆疊資訊

2.4 make/makefile自動化構建工具
2.4.1 自動化構建是什么
如果工程中檔案量非常大,則上面的gcc命令則需要手動一步步去執行,太慢了,所以有了makefile檔案,
makefile檔案書寫一次,只需要使用make命令,整個工程就會自動編譯,
makefile檔案寫編譯規則,make負責解釋這些規則,
2.4.2 makefile檔案怎么寫
1.書寫規則
??makefile檔案由三部分構成,分別是 目標檔案、依賴物件、編譯命令共同組成,
??偽目標:將物件設定為偽目標,則不管檔案有沒有更新的情況下都不會生成目標物件,常用于工程清理,比如說下發圖片中第22行就是偽目標物件

上述makefile檔案中的依賴關系為:
sort_test依賴sort.o和stack.o
sort.o和stack.o依賴sort.s和stack.s
以此類推
2.4.3 makefile作業原理
1.make會在當前目錄下尋找名字為
makefile或Makefile的檔案進行編譯
2.make命令只會為生成第一個目標檔案而服務,上述例子中只會為生成sort_test檔案而服務
3.如果目標檔案的依賴物件不存在會在下方命令中尋找可以生成該依賴物件的命令進行執行,會先生成所需要的依賴物件再去生成目標物件
4.如果檔案沒有更新則執行make命令不會去重新編譯,如果檔案有更新,再去執行make命令才會對改變的目標重新生成目標物件,
-
執行
make命令

-
檔案未更新執行
make命令

-
檔案更新執行
make命令

-
清理工程

2.4.4 內置變數和自定義變數
1.內置變數
??在這里只列最常用的兩個變數
| 引數 | 作用 |
|---|---|
| $^ | 代表所有依賴物件 |
| $@ | 代表所有目標物件 |
2.自定義變數
自定義方法:
變數名 = 字串
使用方法:$(變數名)一般用來定義名字出現次數較多的變數
??還記得上面makefile檔案中的代碼嗎,我們將上述代碼改寫以下利用內置變數與自定義變數進行改寫,


2.4 git代碼管理工具
??在這個工具的使用中,我會以我的個人倉庫作為示例進行演示,
1.登錄自己的遠端倉庫
??登錄自己的遠端倉庫,并且新建一個倉庫,我這里有倉庫了就不新建了,
2.復制遠端倉庫鏈接
??找到遠端倉庫的鏈接復制下來,一會有大用,

2.4.1 linux下的git工具使用
沒有工具的要先下載工具
1.克隆專案到本地
如果想對遠端倉庫進行代碼的提交,則必須先要克隆倉庫到本地
git clone [url]
克隆時,也保證當前檔案夾不是倉庫

2.將代碼交由git管理
將代碼放入倉庫中,如果直接在倉庫新建代碼,但是它不歸倉庫所管理,所以要通過add命令交由倉庫管理,
git add [檔案名]

3.提交改動到本地
上一步做完之后,新建的檔案已經由倉庫管理了,本地倉庫沒有接收這個改動,所以將改動提交至本地,
git commit -m "日志資訊"
提交代碼時,一定要提前配置好用戶名和郵箱地址,下面就是反例,

4.將改動過的代碼提交到遠端倉庫
git push origin master


總結
以上的所有內容就是關于liunx工具的使用了,文章中難免會出現一些小問題,如果有發現,歡迎批評指正,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/286516.html
標籤:其他
