linux基礎開發使用工具
一、vim 文字編輯工具
vim有12中模式,每一種模式都有不同的功能,不同的模式做不同的操作
主要講解三種模式:普通模式,插入模式,行底模式(檢視模式,替換模式)
vim file 開啟檔案
從普通模式切換到插入模式:i
i:從游標所在位置開始插入
a:從游標所在位置的下一個字元開始處插入
I:將游標移動到行首,然後進行插入
A:將游標移動到行尾,然後進行插入
o:在游標所在行的下方,新建一行,並進入插入模式
O:在游標所在行的上方,新建一行,並進入插入模式
s:刪除游標所在字元,然後進入插入模式
從普通模式切換到底行模式: 輸入:
:w 儲存
:q 退出
:q! 強制退出(不儲存本次修改)
:wq 儲存退出
:!pwd 臨時執行命令,按回車返回vim
從插入模式或底行模式返回普通模式
ESC
普通模式下的常用操作:
h 向左移動游標
j 向下移動游標
k 向上移動游標
l 向右移動游標
w 游標向右移動一個單詞
b 游標向左移動一個單詞
yy 複製游標所在行
nyy 從游標所在行開始向下複製n行
p 向光標所在行下方貼上新行
P(大寫)向光標所在行上方貼上新行
dd 剪下(vim種刪除其實是剪下)
ndd 從游標所在行開始刪除n行
xx 刪除游標所在字元
dw 刪除游標位置開始的下一個單詞
u 撤銷上一次操作
ctrl+r 返回撤銷操作
ctrl+v 進入列檢視模式,可以進行選擇操作
v 進入行檢視模式,可以進行選擇操作
r 替換游標所在字元
R 進入替換模式,對內容一致替換
gg 游標移動到文件首行
G 游標移動到游標末位行
gg=G 全文縮排對齊
set nu 設定自動縮排
set ai 設定製表符的長度等於4個空格長度
二、gcc/g++編譯器 將C/c++等高階語言程式編譯成為機器可識別程式
linux下程式的執行就是告訴作業系統程式/檔案在哪個檔案下
gcc是一個編譯工具,將C語言程式編譯成為機器可識=識別的語言程式
chmod -x main.c轉化為可執行程式
ABI----標準 二進位制應用介面
gcc常用選項:
-O:制定要生成的檔案的名稱
-E:只預處理
-S:只編譯
-C:只彙編
-static:靜態連結(gcc預設是動態連結)
程式的編譯過程:
1.預處理 去掉註釋,展開所有程式碼
2.編譯 先糾錯,沒有錯誤則編譯成彙編程式碼
3.彙編 將彙編程式碼生成一個機器可識別的程式碼b(只能將程式碼彙編完畢,但是不能執行,因為程式碼不完全,
呼叫的庫函式還不知道怎麼實現,需要經過連結才可實現)
4.連結 將庫中的函式連結過來和我們的程式碼最終合併並生成可執行程式
連結分為動態連結和靜態連結,分別連結動態庫和靜態庫。動態連結生成的可執行程式小,靜態連結大,
但是動態連結生成的程式執行時需要動態庫的存在,靜態庫不需要(因為靜態連結就是將庫中的函式全部拿過來生成可執行程式了,所以大)
程式的連結方式預設是動態連結
三、gdb 程式除錯工具
gcc -g 選項是開啟gdb除錯選項,目的是為了在可執行程式中加入除錯符號資訊
gdb除錯一個程式需要這個程式在編譯的時候加上-g選項來開啟除錯,為可執行程式加入一些除錯符號資訊。gcc -g main.c -o main
gdb 如何載入程式
gdb ./main
gdb進入後 file ./main
gdb常用命令:
run 簡寫r 開始執行程式 程式直接跑起來
r -l -s -a程式引數在這裡載入 s下一步,跟蹤進入函式
start開始逐步除錯程式
l 檢視當前行附近程式碼(也可以指定行號)
n 下一步,不跟蹤進入函式
until 行號 直接執行到第n行
b main.c:n 給mian.c第n行新增斷點
b n 給當前檔案第n行新增斷點
b func 給函式新增斷點
i 檢視詳細資訊
i b 檢視當前斷點資訊
d 預設刪除所有斷點
d n 刪除id為n的斷點
p 列印變數內容
watch 變數監控,變數內容修改時會停下來
bt 檢視函式呼叫棧資訊
四、makefile 不普通的普通檔案
在makefile中我們通常定義很多的程式編譯規則,在終端命令列下敲擊一個make命令,那麼這時候make這個成簇,就會跑到當前目錄下找尋這個
Make file檔案,然後按照makefile中已經規劃好的編譯順序以及編譯規則來完成整個專案的編譯。
make這個命令只在當前目錄下找名字叫makefile/Makefile的檔案,逐步執行記錄的編譯規則
如何編寫makefile
main.c ---->main
目標物件名稱:依賴物件名稱
[製表符](\t)通過依賴物件生成目標物件的命令
main is uo to data 說的是,目標物件已經是最新的了,不需要重新生
make這個程式會判斷一下依賴檔案的最後修改時間,和目標物件檔案的最後修改時間,如果目標檔案的時間戳大於依賴檔案的時間戳,那麼就證明依賴檔案在上次編譯
make可以檢測目標物件和依賴物件的時間屬性,判斷程式是否需要重新編譯
make永遠只找一個目標物件生成,生成了第一個物件之後就退出
make可以指定要生成的物件 例如:make clean
偽物件:不管是不是最新的 ,都需要重新生成(執行下邊的命令)使用.PHONY來申明一個物件是偽物件
變數:預定義變數----makefile已經提前定義好的變數
[email protected] 編寫規則中藥生成的目標物件
$^ 編寫規則中所有的依賴物件
$< 編寫規則中所有依賴物件的第一個
src=main.c
a=src a =src這個字串 應該為a=$(src ) 變數的使用需要加上$符號,否則認為是字串賦值
src=$(wildcard ./*.c) 獲取當前目錄下檔名字以.c結尾的檔名賦值
五、yum 紅帽子系列linux作業系統的軟體包管理工具
yum是紅帽子系列linux作業系統進行軟體包管理的工具
軟體的安裝/移除/檢視都是通過yum工具完成的
檢視
yum list | grep 想要安裝的包名字
安裝
yum install 想要安裝的包名字
移除
yum remove 安裝包名字