目錄
Linux 軟體包管理器 —— yum
軟體包的概念
使用yum
實作本地機器和云服務器的檔案互傳
Linux 編輯器 —— vim
vim命令模式命令大全
vim底行模式命令大全
配置vim
Linux 編譯器 —— gcc/g++使用
執行編譯的四個步驟(了解就好)
gcc選項
Linux 除錯器 —— gdb使用
背景
release轉換成debug
除錯
命令匯總
Linux 軟體包管理器 —— yum
軟體包的概念
在Linux下安裝軟體,通常的辦法是下載到程式的源代碼,并進行編譯,得到可執行程式
但是這樣太麻煩了,于是有些人把一些常用的軟體提前編譯好,做成軟體包(可以理解成Windows上的安裝程式)放在一個服務器上,通過包管理器可以很方便的獲取到這個編譯好的軟體包,直接進行安裝
軟體包和包管理器,就好比app和應用商店的關系
yum(Yellow dog Update,Modified)是Linux下非常常用的一種包管理器,主要應用在Fedora,RedHat,Centos等發行版上,
使用yum
輸入指令yum list,就可看到可以下載的全部軟體(串列很長,就不截圖了)
安裝軟體
輸入指令 sudo yum install 軟體名
yum會自動匹配到你想安裝的軟體并詢問你是否需要下載,這時候按y確認安裝,當末尾出現complete時,說明安裝完成
實作本地機器和云服務器的檔案互傳
先安裝lrzsz這個軟體

安裝完后輸入指令rz -E可選擇可選擇需要從本地機器上傳的軟體

而輸入指令sz+檔案名可將云服務器上的檔案下載到本地機器指定的檔案夾中

Linux 編輯器 —— vim
vim:vim是解決在Linux上代碼的撰寫的問題,本質是文本編輯器
特點:多模式的文本編輯器
這里先介紹vim主要的三種模式:命令模式、底行模式、插入模式
vim默認打開的時候所處的模式是命令模式

命令模式切換成插入模式:
i:在當前游標處進入插入模式
a:在當前游標的后一個位置進入插入模式
o:在當前游標處的下一行進入插入模式
vim命令模式命令大全
移動游標
h:左移游標
j:下移游標
k:上移游標
l:右移游標
$:移動到游標所在行的行尾
^:移動到游標所在行的行首
gg:移動到文本開頭
G:移動到文章的最后
n+shift+g:移動到第n行行首
w:游標跳到下個字開頭
e:游標跳到下個字字尾
b:游標回到上個字開頭
nl:游標移到該行的第n個位置
ctrl+b:螢屏往后移動一頁
ctrl+f:螢屏往前移動一頁
ctrl+u:螢屏往后移動半頁
ctrl+d:螢屏往前移動半頁
洗掉文字
x:每按一次,洗掉游標所在位置的一個字符
nx:洗掉游標所在位置的后面(包括自己)的n個字符
X:大寫的X,每按一次,洗掉游標所在位置的前面一個字符
nX:洗掉游標所在位置的前面的n個字符
dd:洗掉游標所在行
ndd:從游標所在行開始洗掉n行
復制
yw:將游標所在之處到字尾的字符復制到緩沖區中
nyw:復制n個字到緩沖區
yy:復制游標所在行到緩沖區
nyy:表示拷貝從游標所在的該行往下數的n行內容
p:將緩沖區內的字符貼到游標所在位置,注意:所有與y有關的復制命令都必須與p配合才能完成復制與粘貼功能
替換
r:替換游標所在處的字符
R:替換游標所到之處的字符,直到按下Esc鍵為止
撤銷上一次操作
u:若誤執行一個命令,可按u撤銷該操作,恢復到上一個操作
ctrl + r:撤銷的恢復
更改
cw:更改游標所在處的字到字尾處
c#w:表示更改#個字
跳至指定的行
ctrl+g:列出游標所在行的行號
nG:移動游標至文章的第n行行首
vim底行模式命令大全
在使用底行模式之前,請記住按Esc鍵確定你已處于正常模式,再按:冒號即可進入底行模式
列出行號
set nu:在文章的每一行前面列出行號
跳到檔案中的某一行
#:#表示一個數字,在冒號后輸入一個數字,再按回車就會跳到該行了
查找字符
/關鍵字:先按/鍵,再輸入想尋找的字符,如果第一次找的關鍵字不是你想找的,可以一直按n會往后尋找到你要的關鍵字為止
?關鍵字:先按?鍵,再輸入想尋找的字符,如果第一次找的關鍵字不是你想找的,可以一直按n會往前尋找到你要的關鍵字為止
保存檔案
w:冒號后輸入w可將檔案保存
離開vim
q:按q就是退出,如果無法離開vim,可以在q后跟一個!強制離開vim
wq:保存并退出
配置vim
這里給大家一個非常方便的腳本,你想在哪個用戶下配置vim就在哪個用戶下敲這個腳本,按回車就會自動幫你安裝啦!
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
功能齊全,親測有效!
Linux 編譯器 —— gcc/g++使用
執行編譯的四個步驟(了解就好)
gcc是c的編譯器,g++是c++的編譯器,兩者在執行編譯時都會經過以下四個步驟
1.預處理(gcc -E):頭檔案展開,去注釋,宏替換,條件編譯
2.編譯(-S):c代碼編譯成匯編
3.匯編(-c):將匯編語言翻譯成為目標檔案(可重定向目標檔案)
4.鏈接:將匯編程序產生成的二進制代碼進行鏈接
gcc選項
-E:只激活預處理,不生成檔案,你需要將它重定向到一個檔案中
-S:編譯到匯編語言,不進行匯編和鏈接步驟
-c:編譯到目標代碼
-o:檔案輸出到檔案,常用gcc 代碼檔案 -o 輸出檔案
-g:生成除錯資訊
-static:此選項對生成的檔案采用靜態鏈接
Linux 除錯器 —— gdb使用
背景
首先我們要明白,程式發布的方式有兩種,debug版本和release版本
debug:程式本身會被加入更多的除錯資訊,以便于進行除錯,
release:不會添加任何的除錯資訊,不可被除錯,
而Linux gcc/g++ 出來的二進制程式,默認時release版本
so,要使用gdb除錯,得先轉換成debug版本,所以必須在源代碼生成二進制程式的時候,加上-g選項,
release轉換成debug

可以看到,mytest和mytest_g兩者的大小有差別,所以mytest是默認生成的release版本的,mytest_g是debug版本的(因為加入了除錯的資訊,所以檔案會變大)

通過readelf指令和grep過濾后也可以驗證我們的觀點(readelf命令一般用于查看ELF格式的檔案資訊),mytest_g就是比mytest多出這些和debug有關的除錯資訊,所以mytest_g是debug版本的,
總結:Linux默認發布的可執行程式,是動態鏈接且release方式,可通過-static和-g選項來修改成靜態鏈接和debug版本,
除錯

通過gdb mytest_g除錯程式
進入到gdb模式后,可以輸入 list/l 指令顯示原始碼(每次列10行,接著上次的位置往下列),或者想從第一行開始顯示可以輸入 l 1 指令,

通過run指令運行程式,輸出結果

打斷點:b 行號

查看斷點:info b
可以看到當前有一個斷點在第2行

再打一個斷點并查看

洗掉斷點:d num
命令匯總
list /(l 行號):顯示源代碼,每次列10行,接著上次的位置往下列
list /(l 函式名):列出某個函式的源代碼
run/r:運行代碼
b 行號:打斷點
info b:查看斷點
d Num(斷點編號):洗掉斷點
p 變數:列印變數值,也可以p &變數列印變數的地址
next/n:逐程序執行
step/s:逐陳述句執行
display 變數名:跟蹤查看一個變數,每進行一步除錯都會顯示一次它的值
undisplay 跟蹤變數名的編號:取消對先前設定的那些變數的跟蹤
until x行號:跳至x行(忽略掉那些無效的代碼的行)
finish:執行到當前函式的回傳,然后停下來等待命令
continue/c:跳轉到下一個斷點
set var:修改變數的值
disable 斷點編號:禁用斷點
enable 斷點編號:啟用斷點
bt:查看各級函式呼叫及引數
quit:退出gdb
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/292700.html
標籤:其他
上一篇:Eclipse 使用和問題總結
下一篇:【計算機網路】搞定DNS協議入門
