Linux 基礎開發(fā)工具

姓名:張立斐 ? 學號:19020700001? ?學院:電子工程學院?

轉(zhuǎn)自:https://blog.csdn.net/weixin_39121325/article/details/85781878

【嵌牛導讀】Linux 基礎開發(fā)工具

【嵌牛鼻子】Linux?

【嵌牛提問】Linux 如何使用基礎開發(fā)工具?

【嵌牛正文】

Linux 軟件包管理器 —— yum

軟件包的概念

在Linux下安裝軟件,通常的辦法是下載到程序的源代碼,并進行編譯,得到可執(zhí)行程序

但是這樣太麻煩了,于是有些人把一些常用的軟件提前編譯好,做成軟件包(可以理解成Windows上的安裝程序)放在一個服務器上,通過包管理器可以很方便的獲取到這個編譯好的軟件包,直接進行安裝

軟件包和包管理器,就好比app和應用商店的關系

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有關的復制命令都必須與p配合才能完成復制與粘貼功能

替換

r:替換光標所在處的字符

R:替換光標所到之處的字符,直到按下Esc鍵為止

撤銷上一次操作

u:若誤執(zhí)行一個命令,可按u撤銷該操作,恢復到上一個操作

ctrl + r:撤銷的恢復

更改

cw:更改光標所在處的字到字尾處

c#w:表示更改#個字

跳至指定的行

ctrl+g:列出光標所在行的行號

nG:移動光標至文章的第n行行首

vim底行模式命令大全

在使用底行模式之前,請記住按Esc鍵確定你已處于正常模式,再按:冒號即可進入底行模式

列出行號

set nu:在文章的每一行前面列出行號

跳到文件中的某一行

#:#表示一個數(shù)字,在冒號后輸入一個數(shù)字,再按回車就會跳到該行了

查找字符

/關鍵字:先按/鍵,再輸入想尋找的字符,如果第一次找的關鍵字不是你想找的,可以一直按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++使用

執(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有關的調(diào)試信息,所以mytest_g是debug版本的。

總結: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指令運行程序,輸出結果


打斷點: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

————————————————

版權聲明:本文為CSDN博主「那就等雨停吧」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。

原文鏈接:https://blog.csdn.net/qq_52454367/article/details/119393548

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容