Linux:Linux下的常用工具解析(yum/vim/ gcc/g++ /gdb/make/Makefile/git)

一、 軟件包管理工具yum

類似於手機上的應用商店,幫我們系統安裝軟件包
1.如何查看能夠安裝的軟件包
yum list/search 默認去centos官方服務器去請求當前版本的centos能夠安裝的哪些軟件包
yum list | grep vim 查看以vim開頭的軟件 grep過濾過濾掉其它的
查看已經被安裝的軟件包 : yum list installed
2.如何安裝指定軟件包
安裝軟件包是給系統安裝應用,因此需要使用root用戶 su root
yum install +軟件包名稱 例如: yum install vim (安裝vim)
yum install lrzsz 主機與虛擬機之間的文件傳輸工具 rz從主機向虛擬機傳輸 sz從虛擬機向主機傳輸
lrzsz工具在xshell中用的,針對遠程工具使用 從windows下可以拖一個文件
3.如何卸載安裝的軟件包
yum remove +軟件包名稱
附: vim --version(查看vim的版本)

二、個人編程工具

文本編輯器 vim

是命令行下的文本編輯工具,利用它我們可以在linux下寫代碼
默認不支持鼠標操作,並且默認沒有windows下的常用快捷鍵
vim有多種不同的操作模式:不同操作模式下某個按鍵功能也有所不同 一共12中操作模式,常用的有3種:
插入模式:文本插入數據
低行模式:文本的保存及退出編輯 wq保存並退出
普通模式
完成文本內容的操作(複製/粘貼/刪除) vim 打開一個文件後默認處於該模式
eg: vim test.c 打開test.c這個文件 test.c可以不存在,vim 可以可以直接默認創建並打開文件 可以不用touch 創建文件
光標移動

  • hjkl 左下上右鍵,
  • ctrl+f/b 向下/上翻頁
  • G 直接調至文件末尾
  • gg返回文件首行
  • gg =G 全文對齊

複製:複製光標所在一行 yy nyy複製n行 比如 6yy複製6行
粘貼:

  • p 向光標所在行的下一行粘貼(光標移到哪,就複製到光標的下一行),原本的下一行就到下下一行了)
  • P 向上粘貼

剪切

  • dd 刪除光標所在行(vim中沒有真正的刪除,複製就顯示刪除的)
  • ndd一次性剪切n行
  • x 刪除光標所在字符
  • dw 從光標往後刪除整個單詞
  • u 撤銷上一步操作
  • ctrl+r 反向撤銷

模式之間的切換
普通->插入:

  • i (i從光標所在位置開始插入)
  • a 光標向後移動一個字符開始插入
  • o 在光標所在行下方添加新行開始插入
  • I/A/O

插入->普通

  • ESC鍵

普通->低行 :
不管在什麼模式下切換到普通模式都可以使用 ESC
:help 查12種操作模式

編譯器 gcc/g++

編譯器也是一個軟件(程序 )gcc是C語言的編譯器,g++是C++語言的編譯器
我們寫的C語言代碼不能被機器直接識別,因爲C語言是一個高級語言,所寫的代碼不是機器能夠識別的指令,因此需要編譯器將高級語言所寫的代碼翻譯成機器能夠識別的指令集(二進制)
編譯器將高級語言代碼解釋成爲機器指令集所經過的過程:
1.預處理:
去註釋、頭文件展開、條件編譯、宏替換(宏替換不做語法檢查,在編譯時檢查)

 gcc -E test.c  -o test.i   (將test.c 生成 test.i可執行文件)  -E:預處理完就結束編譯:將C語言翻譯成彙編語言 

2.編譯:將C語言程序解釋成爲彙編語言(進行代碼語法語義糾錯)

 gcc -S test.i   -o test.s  

3.彙編:將彙編語言翻譯成二進制(現在的二進制是目標文件)

  gcc -c test.c  -o test.o     .o文件是目標文件 

4.鏈接 鏈接動靜態庫生成可執行文件 gcc默認使用的是動態鏈接,靜態鏈接後面加-static

  gcc -o mytest test.c  // 以後直接一步就可以

動態鏈接:產生了關聯 在Linux 中動態庫以 .so結尾
編譯鏈接時並沒有把庫文件的代碼加入到可執行文件中,而是在程序執行時由運行時鏈接文件加載庫,這樣可以節省系統的開銷。多個程序在內存中使用同一個庫,內存中代碼冗餘比較小
靜態鏈接:在windows 中靜態庫以 .lib結尾
編譯鏈接時,把庫文件的代碼全部加入到可執行文件中,因此生成的文件比較大,若干個程序都使用了同一個庫,則會在內存中造成代碼冗餘,但在運行時也就不再需要庫文件了
動態庫

優點 缺點
動態庫 體積小 ,冗餘小 依賴庫本身
靜態庫 不依賴第三方庫 體積大 ,會造成代碼冗餘

調試器 gdb

它也是一個程序/軟件 可以在調式程序運行的過程,便於找出程序中bug出現的位置
調試一個程序,這個程序必須包含有調試符號信息但linux下gcc編譯器,默認生成release程序(發佈版本,無法進行調試),所以想要調試程序,需要在gcc編譯時使用-g選項生成debug版本程序 gcc -g test.c -o test
gdb調試實現原理:ptrace接口

gdb調試程序運行過程的命令 (gdb ./test 調試test.c)
開始調試命令:

  • run–直接運行程序
  • start–開始逐步調試(main函數的第一行)

流程相關命令:

  • list–查看當前調試行附近代碼;
  • until 直接運行到指定行位置(until test.c:30 直接運行到test.c的30行)
  • next 下一步(一步步向後走,相當於vs的F11,遇到函數直接運行函數)
  • step 下一步 遇到函數直接進入函數
  • continue 繼續運行,不再逐步調試

斷點相關命令

  • break 打斷點 (break test.c:24給test.c中第24行打斷點)
  • info break 查看斷點信息
  • delete break_id 刪除斷點 (delete 7刪除7號斷點)
  • watch 變量監控斷電(watch i 監控i,數據改變則停下來)

其它命令:

  • 查看函數調用棧—>快速查看程序崩潰退出位置 backtrace
  • print 查看變量數據

三、 項目管理工具

項目的自動化構建工具:make/Makefile

項目的自動化構建項目
makefile是一個普通的文本文件,記錄着一個項目的編譯流程以及規則,
make–是makefile的解釋器(程序),它找到makefile文件,按照流程執行makefile中的記錄
makefile編寫規則:

目標對象:依賴對象(通過依賴對象來生成目標對象)//依賴關係
(ta鍵) gcc -o 目標對象 依賴對象  //分別可以用$@ $^代替   依賴方法
//清除運行後的代碼
.PHONY:clean //僞目標, 不管目標對象是否最新、是否存在,每次都需要重新生成
clean:
(tab鍵) rm -f 目標文件
//例如
test:test.c
  gcc -o $@ @^
.PHONY:clean
clean:
  rm -f test

項目的版本管理工具 git

這是一個對項目進行日誌管理的工具。當你寫一個項目時,寫完了一個部分,再寫其它的,然後發現新代碼有問題,想要還原到之前的階段,這樣每個用戶都可以再自己的主機上建立自己的項目版本倉庫
從遠程服務器克隆一個項目下來: get clone 地址//當你在本地寫的不對時,想找之前的,就可以這樣
做修改後,進行本地倉庫版本管理:

  • git add ./*
  • git commit -m “備註信息”
  • git push origin master //將本地版本同步到遠程服務器的master分支
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章