1. 程式人生 > >linux基礎開發使用工具

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 安裝包名字