🌏摔倒了,就正好躺下來歇歇,只要方向是對的,慢一點也會到,

🎓Yum
🐱?💻Yum概述
yum( Yellow dog Updater, Modified)是一個在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端軟體包管理器,Yum是rpm系統的自動更新程式和包安裝/洗掉程式,它會自動計算依賴項,并計算出安裝軟體包應該發生的事情,Yum有一個用于添加簡單功能的插件介面,它使維護機器組變得更容易,而無需使用rpm手動更新每臺機器,
🐱?💻Yum的設定
🐱?💻添加epel源
例如我們這里是在安裝了CentOS 7.6 的騰訊云,我們可以直接通過下面的命令安裝 epel 的 yum 源:
sudo yum install epel-release
🐱?💻常見用法
1、 顯示所有的軟體包
yum list
下面圖中的只是一部分的軟體包,因為顯示不了那么多,

2、 安裝軟體包
yum install packagename(軟體包名)
注意:普通用戶在安裝軟體時,最好還是帶上sudo來提升我們的權限,以防后期出現一些配置的錯誤,
3、 卸載軟體包
yum erase packagename(軟體包名)
4、 搜索軟體包
yum search packagename(軟體包名)
5、 清除快取
yum clean all # 清除系統所有的yum快取
yum makecache # 生成yum快取
注意:
- 在使用yum源時,我們必須得先知道一個服務器同一時刻只允許一個yum進行安裝,不能在同一時刻同時安裝多個軟體,必須等上一個下載完后才能安裝下一個,
yum是從服務器上下載RPM包,所以在下載時必須聯網,可以通過ping指令判斷當前云服務器是否聯網,如下動圖所示:

在這里我們先下載3個軟體,下面講時會用到,
- 1、下載gcc用來編譯C程式
sudo yum install gcc - 2、下載g++用來編譯C++程式
sudo yum install gcc-c++ - 3、下載irzsz用來實作linux與windows檔案互傳
sudo yum install lrzsz - 4、下載gdb用來除錯程式
sudo yum install gdb - 5、下載yum用來編輯
sudo yum install vim*
🎓windows與linux檔案互傳
在上面的安裝軟體包我們已經安裝好lrzsz,我們就可以實作互傳檔案的操作,
🚀windows to linux
命令格式:
rz [option]
將windows環境上的檔案上傳到linux機器上,

🚀linux to windows
命令格式:
sz [option] filename
將云服務器上的檔案下載到本地機器的指定檔案夾,

注意:
- rz 命令和 sz 命令不能直接上傳、下載檔案夾,可先將檔案夾打包,當作檔案上傳和下載,
🎓vim編輯器
🗼vim概述
vim(Vi improved)是vi編輯器的加強版,比vi更容易使用,vi的命令幾乎全部都可以在vim上使用,代碼補完、編譯及錯誤跳轉等方便編程的功能特別豐富,在程式員中被廣泛使用,
🗼vim編輯器的使用
1、使用vim打開檔案
vim 檔案名
① 如果檔案已存在,則直接打開
② 如果檔案不存在,則vim編輯器會自動在記憶體中創建一個新檔案
例如:使用vim命令打開csdn.txt檔案
vim csdn.txt
(1)、保存檔案
在任何模式下,連續按兩次Esc鍵,即可回傳到命令模式,然后按(shift+:)冒號,進入到末行模式,輸入wq,代表保存并退出,

(2)、強制退出檔案
和上面的一樣先進入到命令模式后,輸入冒號后,在輸入q!

🗼vim 基本模式
我們這里主要介紹vim最常用的四種模式:命令模式、插入模式、底行模式、可視模式,
1、命令模式(Normal mode),
用vim打開一個檔案就直接進入命令模式了(這是默認的模式),在這個模式中, 你可以使用上下左右按鍵來移動游標,你可以使用洗掉字符或洗掉整行來處理檔案內容, 也可以使用復制、粘貼來處理你的檔案資料,
在命令模式下有如下操作:
Ⅰ、游標移動
shift+$:游標移動到本行的結尾,
shift+^:游標移動到本行的開始,
shift+g:游標移動到結尾,
gg:游標移動到最開始,
n(你要移動到哪一行的行號)+shift+g:游標移動到給定的行,
w:按照“單詞”為單位進行游標tiao’zhuan,從左往右,在從上到下
b:按照“單詞”為單位進行游標tiao’zhuan,從右往左,在從下往上
h:游標向左一個字符
j:游標向下走一行
k:游標向上走一行
l:游標向右走一行
Ⅱ、復制粘貼
yy:復制游標所在的一行內容,
nyy:復制包括游標所在位置開始的以下n行,(n為你想要拷貝的行數<包括本行>)
yw:復制一個”單詞“,
nyw:復制n個”單詞“,
p:粘貼,
np:粘貼n次,
Ⅲ、撤銷與反撤銷
u:撤銷,
ctrl+r:恢復剛剛的撤銷,
Ⅳ、洗掉和剪切
dd:洗掉游標所在的一行,
dd后+p就相當剪切,
x:洗掉游標所在位置哪一個字符,<往后刪>
shift+x(X):洗掉游標之前的字符,(不包括游標所在位置)<往前刪>
nx:洗掉游標所在位置開始的n個字符(包括游標所在位置),
r:下面的操作,直接替換當前游標所在的字符
nr:下面操作,直接替換n個字符為相同的字符
shift+r?:進入替換模式
Ⅴ、切換大小寫
shift+~:碰到大寫變小寫,碰到小寫變大寫,
2、插入模式(Insert mode),
在一般模式中可以進行洗掉、復制、粘貼等的操作,但是卻無法編輯檔案的內容,只有當到你按下【i, I, o, O, a, A】等任何一個字母之后才會進入編輯模式,這時候螢屏的左下方會出現【INSERT】的字樣,此時才可以進行編輯,而如果要回到一般模式時, 則必須要按下【Esc】即可退出編輯模式,
3、底行模式(Command mode),
在底行模式下,我們可以將檔案保存或退出,也可以進行查找字串等操作,在底行模式下我們還可以直接輸入vim?help-modes查看當前vim的所有模式,
在底行模式下有如下操作:
Ⅰ、行號
set nu:顯示行號
set nonu:取消顯示行號
Ⅱ、分屏
vs 檔案名:分屏
ctrl+w+w:游標在多屏下進行切屏
Ⅲ、退出
退出: :(冒號)+q
4、可視模式(Visual Modes)
在這個模式下我們可以進行多行注釋以及取消多行注釋等,在命令模式中,直接按ctrl + v(可視塊)或V(可視行)或v(可視),然后按下↑ ↓ ← →方向鍵來選中需要復制的區塊,按下y 鍵進行復制(這里和命名模式不一樣,不要按兩下yy),最后按下p 鍵粘貼退出可視模式按下Esc,
Ⅰ、多行注釋
第一步:按Esc退出到命令模式,按gg切換到第1行,
第二步:然后按Ctrl+v進入到可視化區塊模式,
第三步:在行首使用H、J、K、L進行左、下、上、右鍵選擇需要注釋的多行,
第四步:按下鍵盤(大寫)“I”鍵(Shift + i),進入插入模式,
第五步:輸入//號注釋符,
第六步:輸入完成后,連續按兩次Esc即可完成添加多行注釋的程序,

Ⅱ、取消多行注釋
第一步:按Esc退出到命令模式,按gg切換到第1行,
第二步:然后按Ctrl+v進入可視化區塊模式(列模式),
第三步:使用鍵盤上的方向鍵的H、J、K、L進行左、下、上、右選中需要移除的//號注釋,
第四步:直接按方向鍵上面的Delete鍵即可完成洗掉注釋的操作,

🎓Linux編譯器 gcc/g++
🧸gcc/g++概述
GNU CC(簡稱gcc)是GNU專案中符合ANSI C標準的編譯系統,gcc和g++能夠編譯用C、C++、Object C、Jave等多種語言撰寫的程式,
🧸gcc/g++編譯流程
1、預處理
在預處理階段gcc與g++會進行宏替換、去注釋、條件編譯、頭檔案包含等作業,生成 .i 檔案,
例如:g++ -E test.cpp -o test.i
上面指令的含義是:執行完預處理就停下來,并生成test.i的檔案,
2、編譯
在編譯階段gcc與g++會先檢查我們的代碼語法是否有錯誤和代碼的規范性,最后將我們的代碼編譯成匯編代碼,生成 .s 檔案,
例如:g++ -S test.i -o test.s
上面的指令含義是:執行完編譯階段就停止,并生成test.s的檔案 ,
3、匯編
在匯編階段gcc與g++會將編譯后生成的匯編代碼編譯成機器碼,生成 .o 檔案,
例如:g++ -c test.s -o test.o
上面的指令含義是:執行完匯編階段就停止,并生成test.o的檔案,
4、鏈接
最后在鏈接階段連接器將目標檔案和你用到的相關庫檔案一起鏈接起來,
例如:g++ test.o -o test.exe
上面的指令含義是:將我們的檔案及相關的庫檔案鏈接形成可執行程式,
注意:
1、如果記不住我們每個階段用什么選項的話,不妨看看自己鍵盤的左上角的ESC鍵,但要注意我們的匯編階段是小寫的c,
2、其默認生成的release版本,不可以進行除錯,
🧸動靜態庫
在鏈接階段我們要鏈接相關的庫檔案,其中這些庫檔案中,又分為動態庫和靜態庫兩種,


??動靜態庫區別
1.命名方式不同:
靜態庫libxxx.a:庫名前加”lib”,后綴用”.a”,“xxx”為靜態庫名,
動態庫libxxx.so:庫名前加”lib”,后綴變為“.so”,
2.鏈接時間不同:
靜態庫的代碼是在編譯程序中被載入程式中,
動態庫的代碼是當程式運行到相關函式才呼叫動態庫的相應函式,
3.鏈接方式不同:
靜態庫的鏈接是將整個函式庫的所有資料在編譯時都整合進了目標代碼,
動態庫的鏈接是程式執行到哪個函式鏈接哪個函式的庫,
??動靜態庫優缺點
靜態庫:
- 優點是,在編譯后的執行程式不再需要外部的函式庫支持,運行速度相對快些,不依賴第三方庫,程式的可執行較好,
- 缺點是,如果所使用的靜態庫發生更新改變,你的程式必須重新編譯,浪費空間、速度較慢,
動態庫 :
- 優點是,動態庫的改變并不影響你的程式,所以動態函式庫升級比較方便,節省空間(磁盤的空間、運行記憶體的空間),可執行程式體積小,加載速度快,
- 缺點是,因為函式庫并沒有整合行程式,所以程式的運行環境必須提供相應的庫,依賴動態庫,程式的可移植性較差,
🧸gcc/g++語法
語法: gcc/g++?選項?檔案
常用選項如下:
-
-E引數
-E 選項指示編譯器僅對輸入檔案進行預處理,當這個選項被使用時, 前處理器的輸出被送到標準輸出而不是儲存在檔案里. -
-S引數
-S 編譯選項告訴 GCC 在為 C 代碼產生了匯編語言檔案后停止編譯, GCC 產生的匯編語言檔案的預設擴展名是 .s , -
-c引數
-c 選項告訴 GCC 僅把源代碼編譯為目標代碼,預設時 GCC 建立的目標代碼檔案有一個 .o 的擴展名, -
-o引數
-o 編譯選項來為將產生的可執行檔案用指定的檔案名, -
-O引數
-O 選項告訴 GCC 對源代碼進行基本優化,這些優化在大多數情況下都會使程式執行的更快, -O2 選項告訴 GCC 產生盡可能小和盡可能快的代碼, 如-O2,-O3,-On(n 常為0–3); -
- -O 主要進行跳轉和延遲退堆疊兩種優化;
-
- -O0 表示不做優化
-
- -O1 為默認優化
-
- -O2 除了完成-O1的優化之外,還進行一些額外的調整作業,如指令調整等,
-
- -O3 則包括回圈展開和其他一些與處理特性相關的優化作業,選項將使編譯的速度比使用 -O 時慢, 但通常產生的代碼執行速度會更快,
🎓Linux除錯器 gdb
由于我們知道用gcc或g++默認生成的可執行程式是release版本,那么我們怎么生成debug版本呢?只需要在我們的鏈接階段加上 -g 就可以生成debug版本了,

在上面我們已經下載好了gdb除錯器了并且生成了debug的可執行程式,下面我們就進行gdb除錯的相關操作,
語法: gdb?檔案名(debug版本的可執行程式)
🎃gdb常用命令
Ⅰ、顯示
1、list/l 1/n
語法:list/l
功能:顯示當前可執行的代碼,默認從合理的起始行進行顯示,
如果想從第一行開始顯輸入指令 l 1或者list 1 在多按幾次回車就能顯示全部,
2、print/p
語法:print/p?變數/&變數/運算式
功能:只列印一次變數的值、列印變數的地址或列印運算式的值,下一次執行不會顯示,

3、info break/b
語法:info break/b
功能:查看當前除錯程式的所有的斷點資訊,

4、display和undisplay
Ⅰ、
語法:display (&)變數名
功能:display常顯示當前的變數的值或地址

Ⅱ、
語法:undisplay 常顯示編號 編號為下圖的紅色方框中的數字,
功能:undisplay與display完全相反是取消當前的變數的值或地址常顯示,

5、breaktrace/bt
功能:查看各級函式呼叫及引數,
Ⅱ、執行
1、run/r
功能:把代碼運行起來,
*2、next/n
功能:與vs的F10功能相同,有函式呼叫不會進入函式,逐程序執行,
*3、step/s
功能:與vs的F11功能相同,有函式呼叫會進入函式,逐陳述句執行,
**4、until *
語法:until 行號
功能:跳轉至任意行,
*5、finish
功能:在一個函式體內,執行執行完該函式內所有的陳述句,如果我們一直按s除錯碰到系統函式時進入了,我們不想查看該函式的呼叫時,直接finish執行完該函式所有陳述句,
*6、continue/c
功能:從當前行跳轉到下一個斷點處,
Ⅲ、斷點
1、info break/b
語法:info break/b
功能:查看當前除錯程式的所有的斷點資訊,

2、break/b
語法:break/b 行數 含義:在給定的行數打斷點,
功能:打斷點,
3、delete/d
語法:delete/d Num數 其中的Num數為上表中的Num的第一個斷點的意思,
功能:洗掉斷點,

4、disable
語法:disable?編號
功能:禁用指定編號的斷點,
5、enable
語法:enable?編號
功能:啟用指定編號的斷點,
總結
1、gdb會記住上一條的命令,按回車直接執行上一條輸入的命令,
2、gcc/g++默認生成的是release版本,而gdb使用必須是debug版本,即生成的可執行程式必須帶 -g,

如有錯誤之處,還請各位指出,謝謝大家!!!
END…
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/293585.html
標籤:其他
