姓名:張立斐 ? 學號:19020700001? ?學院:電子工程學院?
轉(zhuǎn)自:https://blog.csdn.net/weixin_39121325/article/details/85781878
【嵌牛導讀】Linux 基礎(chǔ)開發(fā)工具
【嵌牛鼻子】Linux?
【嵌牛提問】Linux 如何使用基礎(chǔ)開發(fā)工具焰雕?
【嵌牛正文】
Linux 軟件包管理器 —— yum
軟件包的概念
在Linux下安裝軟件砸喻,通常的辦法是下載到程序的源代碼嚎幸,并進行編譯,得到可執(zhí)行程序
但是這樣太麻煩了济似,于是有些人把一些常用的軟件提前編譯好,做成軟件包(可以理解成Windows上的安裝程序)放在一個服務器上,通過包管理器可以很方便的獲取到這個編譯好的軟件包蚪缀,直接進行安裝
軟件包和包管理器,就好比app和應用商店的關(guān)系
yum(Yellow dog Update恕出,Modified)是Linux下非常常用的一種包管理器椿胯,主要應用在Fedora,RedHat,Centos等發(fā)行版上剃根。
使用yum
輸入指令yum list哩盲,就可看到可以下載的全部軟件(列表很長,就不截圖了)
安裝軟件
輸入指令 sudo yum install 軟件名
yum會自動匹配到你想安裝的軟件并詢問你是否需要下載狈醉,這時候按y確認安裝廉油,當末尾出現(xiàn)complete時,說明安裝完成
實現(xiàn)本地機器和云服務器的文件互傳
先安裝lrzsz這個軟件
安裝完后輸入指令rz -E可選擇可選擇需要從本地機器上傳的軟件
而輸入指令sz+文件名可將云服務器上的文件下載到本地機器指定的文件夾中
Linux 編輯器 —— vim
vim:vim是解決在Linux上代碼的編寫的問題苗傅,本質(zhì)是文本編輯器
特點:多模式的文本編輯器
這里先介紹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:將光標所在之處到字尾的字符復制到緩沖區(qū)中
nyw:復制n個字到緩沖區(qū)
yy:復制光標所在行到緩沖區(qū)
nyy:表示拷貝從光標所在的該行往下數(shù)的n行內(nèi)容
p:將緩沖區(qū)內(nèi)的字符貼到光標所在位置逊桦。注意:所有與y有關(guān)的復制命令都必須與p配合才能完成復制與粘貼功能
替換
r:替換光標所在處的字符
R:替換光標所到之處的字符眨猎,直到按下Esc鍵為止
撤銷上一次操作
u:若誤執(zhí)行一個命令,可按u撤銷該操作强经,恢復到上一個操作
ctrl + r:撤銷的恢復
更改
cw:更改光標所在處的字到字尾處
c#w:表示更改#個字
跳至指定的行
ctrl+g:列出光標所在行的行號
nG:移動光標至文章的第n行行首
vim底行模式命令大全
在使用底行模式之前睡陪,請記住按Esc鍵確定你已處于正常模式,再按:冒號即可進入底行模式
列出行號
set nu:在文章的每一行前面列出行號
跳到文件中的某一行
#:#表示一個數(shù)字,在冒號后輸入一個數(shù)字兰迫,再按回車就會跳到該行了
查找字符
/關(guān)鍵字:先按/鍵信殊,再輸入想尋找的字符,如果第一次找的關(guān)鍵字不是你想找的汁果,可以一直按n會往后尋找到你要的關(guān)鍵字為止
?關(guān)鍵字:先按?鍵涡拘,再輸入想尋找的字符,如果第一次找的關(guān)鍵字不是你想找的据德,可以一直按n會往前尋找到你要的關(guā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++使用
執(zhí)行編譯的四個步驟(了解就好)
gcc是c的編譯器蝌焚,g++是c++的編譯器裹唆,兩者在執(zhí)行編譯時都會經(jīng)過以下四個步驟
1.預處理(gcc -E):頭文件展開,去注釋只洒,宏替換许帐,條件編譯
2.編譯(-S):c代碼編譯成匯編
3.匯編(-c):將匯編語言翻譯成為目標文件(可重定向目標文件)
4.鏈接:將匯編過程產(chǎn)生成的二進制代碼進行鏈接
gcc選項
-E:只激活預處理,不生成文件毕谴,你需要將它重定向到一個文件中
-S:編譯到匯編語言成畦,不進行匯編和鏈接步驟
-c:編譯到目標代碼
-o:文件輸出到文件,常用gcc 代碼文件 -o 輸出文件
-g:生成調(diào)試信息
-static:此選項對生成的文件采用靜態(tài)鏈接
Linux 調(diào)試器 —— gdb使用
背景
首先我們要明白涝开,程序發(fā)布的方式有兩種循帐,debug版本和release版本
debug:程序本身會被加入更多的調(diào)試信息,以便于進行調(diào)試舀武。
release:不會添加任何的調(diào)試信息拄养,不可被調(diào)試。
而Linux gcc/g++ 出來的二進制程序银舱,默認時release版本
so瘪匿,要使用gdb調(diào)試,得先轉(zhuǎn)換成debug版本寻馏,所以必須在源代碼生成二進制程序的時候棋弥,加上-g選項。
release轉(zhuǎn)換成debug
可以看到操软,mytest和mytest_g兩者的大小有差別嘁锯,所以mytest是默認生成的release版本的宪祥,mytest_g是debug版本的(因為加入了調(diào)試的信息聂薪,所以文件會變大)
通過readelf指令和grep過濾后也可以驗證我們的觀點(readelf命令一般用于查看ELF格式的文件信息)家乘,mytest_g就是比mytest多出這些和debug有關(guān)的調(diào)試信息,所以mytest_g是debug版本的藏澳。
總結(jié):Linux默認發(fā)布的可執(zhí)行程序仁锯,是動態(tài)鏈接且release方式,可通過-static和-g選項來修改成靜態(tài)鏈接和debug版本翔悠。
調(diào)試
通過gdb mytest_g調(diào)試程序?
進入到gdb模式后业崖,可以輸入 list/l 指令顯示源碼(每次列10行,接著上次的位置往下列)蓄愁,或者想從第一行開始顯示可以輸入 l 1 指令双炕。
通過run指令運行程序,輸出結(jié)果
打斷點:b行號
查看斷點:info b
可以看到當前有一個斷點在第2行
再打一個斷點并查看
刪除斷點:d num
命令匯總
list /(l 行號):顯示源代碼撮抓,每次列10行妇斤,接著上次的位置往下列
list /(l 函數(shù)名):列出某個函數(shù)的源代碼
run/r:運行代碼
b 行號:打斷點
info b:查看斷點
d Num(斷點編號):刪除斷點
p 變量:打印變量值,也可以p &變量打印變量的地址
next/n:逐過程執(zhí)行
step/s:逐語句執(zhí)行
display 變量名:跟蹤查看一個變量丹拯,每進行一步調(diào)試都會顯示一次它的值
undisplay 跟蹤變量名的編號:取消對先前設置的那些變量的跟蹤
until x行號:跳至x行(忽略掉那些無效的代碼的行)
finish:執(zhí)行到當前函數(shù)的返回站超,然后停下來等待命令
continue/c:跳轉(zhuǎn)到下一個斷點
set var:修改變量的值
disable 斷點編號:禁用斷點
enable 斷點編號:啟用斷點
bt:查看各級函數(shù)調(diào)用及參數(shù)
quit:退出gdb
————————————————
版權(quán)聲明:本文為CSDN博主「那就等雨停吧」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議乖酬,轉(zhuǎn)載請附上原文出處鏈接及本聲明死相。
原文鏈接:https://blog.csdn.net/qq_52454367/article/details/119393548