Linux中部分工具學習

2021-08-10 17:23:45 字數 3246 閱讀 5340

vim使用須知:

在vim底行模式下,set nu設定(顯示)行號

powoff:關機

sync:把資料同步到硬碟裡面

(在一般模式下)

u:撤銷(一步)           u:撤銷(所有操作)

yy:複製                 nyy:複製n行

dd:刪除當前行            ndd:刪除n行

p:貼上

x:刪除當前字元

ng:跳到行號為n的一行                       g:跳到檔案底部

(在底行模式下)

:s/old/new          用new替換首次出現的old

:s/old/new/g       用new替換整行的old

:n,m s/old/new/g    n到m行用new替換所有的old

:%s/old/new/g    替換所有的old

若遇到卡機情況用ctrl+c 中斷

linux開發中常用的工具:

需求:需要將人類用高階程式語言編寫的程式「翻譯」為計算機可以識別的機器語言;

編譯器:將程式翻譯為計算機識別的0和1機器語言;

(編譯器其實也是乙個程式!)

1.預處理:

命令:gcc -e demo.c       (會在終端裡輸出預處理後的資訊)

gcc -e demo.c -o demo.i     (進行預處理,將處理後的資訊儲存到demo.i檔案) 

預處理階段處理

標頭檔案:#inlcude

巨集定義:#define max 10     (後面無分號)

案件編譯

為什麼需要預處理?

因為編譯器本身的主要功能是將高階語言編寫的源程式轉化為機器能夠識別的機器語言,所以非核心的功能交給預處理來做。

2.編譯:    由編譯器將源**編譯為彙編**

命令:gcc  demo.c  -s /  gcc  -s  demo.c           (生成的是彙編**.s)

3.彙編:   有彙編器將源**彙編成中間**    (生成二進位制.o檔案)

命令:gcc  -c  demo.c     /       gcc  -c  demo.s    /    gcc   -c   demo.i

./demo:          .表示當前目錄下       /表示執行

wc -c demo.c   統計demo.c檔案中的位元組數!

cp -r /bin/tmp/bin     用來複製整個目錄的引數!

cp -s .bashrc bashec.cp            建立乙個鏈結檔案,檔名為bashrc.cp

nl:檢視檔案的同時顯示行號

靜態庫與動態庫的建立:

靜態庫建立步驟:

2.將庫檔案編譯生成中間**:gcc  -c  add.c(生成.o檔案) 

3.將中間**生成靜態庫: ar  rcs  libadd.a  add.o           (lib是字首,add是要生成的靜態庫的名字,a表明要生成的是靜態庫)---------------------------------到此時已建立好靜態庫

4.編輯呼叫庫函式的源程式   vim demo.c

5.將原始檔編譯成可執行檔案:  gcc  demo.c  -ladd  -l.

動態庫建立步驟:

2.將庫檔案編譯生成中間**:gcc  -c  add.c  -fpic(生成.o檔案) 

3.將中間**生成動態庫: gcc  add.o  -o  libadd.so  -shared          

---------------------------------到此時已建立好動態庫

4.編輯呼叫庫函式的源程式   vim demo.c

5.將原始檔編譯成可執行檔案:  gcc  demo.c  ./libadd.so

總結:動態庫與靜態庫的區別:

1.靜態庫用.a作為字尾,動態庫用.so作為字尾

2.當使用靜態庫時,鏈結器找出程式中所需要的庫函式,然後將它們拷貝到可執行檔案(a.out)裡面,呼叫1次拷貝1次,一旦鏈結成功,靜態庫就不需要了,因為可執行檔案裡面已包含庫函式-------------現象:當把libadd.a     mv到其他目錄,a.out仍然可以執行,動態庫若移除到其他目錄則無法執行

3.動態庫要比靜態庫生成的可執行檔案小;

4.若在linux下缺少 -static引數時,預設鏈結的是動態庫

gdb除錯工具:

基於什麼樣的現實需求:gcc  -g  demo.c

進入到gdb環境下    gdb  ./a.out

gdb裡面除錯命令:

run:執行程式

break  函式名        /           break  行號    :打斷點

info  break: 檢視斷點數

step:單步執行程式(一行一行的執行)【遇到函式時會進入函式內部執行】

next:單步執行程式【遇到函式時不會進入函式內部執行】

delete  斷點號:刪除斷點

quit:退出gdb環境

list:顯示源**         (list  m:從m行開始顯示)

set  listsize  n:設定顯示n行

print  變數名:列印變數的值

可設定滿足某條件時斷點生效      例:break 20 if i==3

makefile工程管理器:

實際工程中,不可能把所有**放入乙個.c檔案裡面!否則**臃腫,功能劃分不明確,不利於程式設計師看** !

會帶來的缺陷:  容易出錯            只是修改了某個.c檔案,但是還要把其他沒修改的.c檔案再通過命令編譯一遍

因此引入makefile工程管理器

在makefile檔案裡會根據型別,功能,模組指定編譯規則!指定編譯先後順序,哪些需重新編譯!

makefile帶來的好處:1.減少不必要的編譯錯誤  

2.可以實現自動化編譯:只需在終端輸入乙個make命令,就可以將所有的.c檔案,根據makefile檔案指定的規則編譯生成可執行檔案

怎麼使用makefile來實現自動化編譯?

1.首先要有個makefile 檔案

2.在終端輸入:make命令就可以生成可執行檔案

例     demo:add.o  sub.o  main.o

gcc add.o  sub.o  main.o  -o  demo

rm  *.o:刪除字尾為.o的所有檔案

linux部分工具命令

一 vim編輯器 1 vim有三種模式 命令模式 vim剛開啟就是命令模式 x刪除乙個字元 nx刪除n個字元 dd刪除 剪下 一行 ndd刪除 剪下 n行 p貼上 nyy複製n行 shift g跳到最後一行 gg回到最後一行 查詢游標所在字串,n查詢下乙個 u撤銷操作 shift zz儲存退出。插入...

ArcMap 標準工具條中部分工具不可用的情況

在使用arcmap時,是否遇到過標準工具條中比例框,以及工具工具條中的放大,縮小,全圖等導航工具顯示為灰色,不可用的情況?先別著急,其實原因很簡單,就是資料框可能被設定為固定範圍或固定比例。要啟用這些導航工具,請單擊檢視 資料框屬性 在彈出的資料框屬性對話方塊中,單擊資料框選項卡並從範圍列表中選擇自...

Centos部分工具命令

啟動 systemctl start httpd 停止 systemctl stop httpd 重啟 systemctl restart httpd 啟動 systemctl start mysqld 停止 systemctl stop mysqld 重啟 systemctl restart my...