一、Linux軟體包管理器yum
1.什么是軟體包?
將一些常用的軟體提前編譯好, 做成軟體包(可以理解成windows上的安裝程式)放在一個服務器上, 通過軟體包管理器可以很方便的獲取到這些編譯好的軟體包, 直接進行安裝,軟體包和軟體包管理器, 就好比 "App" 和 "應用商店" 這樣的關系,yum(Yellow dog Updater, Modifified)是Linux下非常常用的一種包管理器. 主要應用在Fedora, RedHat, Centos等發行版上.
2.rz/sz的使用
這個工具用于 windows 機器和遠端的 Linux 機器通過 XShell 傳輸檔案,安裝完畢之后可以通過拖拽的方式將Windows機器中的程式上傳到Linux機器中,也可以以指令的方式進行使用,

3.yum基本命令和使用
1)查看軟體包
yum list 顯示所有軟體包 例:yum list | grep lrzsz ---查找rzsz相關的軟體包
2)下載安裝軟體包
yum install 安裝軟體包 例:yum install lrzsz
3)卸載軟體包
yum remove 卸載軟體包 例:yum remove lrzsz
注意:安裝和卸載軟體包需要root權限,同時yum的所有操作必須保證主機網路暢通(ping 指令可以驗證網路是否暢通)
二、Linux編輯器---vim
1.vim的基本概念
vim的3種常用模式(vim一共有12種模式,但只有3種模式最常用),分別是命令(普通)模式(normal mode)、底行模式(last line mode)、插入模式(insert mode),
正常/普通/命令模式:控制螢屏游標的移動,字符、字或行的洗掉,移動復制某區段及進入Insert mode下,或者到 last line mode
插入模式:只有在Insert mode下,才可以做文字輸入,按「ESC」鍵可回到命令列模式,該模式是我們后面用的最頻繁的編輯模式,
底行模式:檔案保存或退出,也可以進行檔案替換,找字串,列出行號等操作, 在命令模式下,shift+: 即可進入該模式,要查看你的所有模式:打開vim,底行模式直接輸入:help vim-modes
2.vim的基本操作
1)vim打開和退出檔案
a.打開檔案
基本命令:vim +檔案名;例vim test.c
注意:使用vim打開檔案時,如果檔案存在則打開檔案,如果檔案不存在則在當前目錄下創建該檔案并打開,
b.退出檔案
使用vim打開一個檔案,要想退出必須在底行模式下使用命令退出,①w保存檔案;②q!強制退出檔案(不保存);③wq保存并退出;
2)vim三種模式的相互切換
a.插入模式、底行模式切換到普通模式:Esc鍵
b.普通模式切換到底行模式:shift+: 鍵
c.插入模式切換到底行模式:Esc鍵切換到普通模式,再shift+: 鍵切換到底行模式
d.正常模式切換到插入模式:i / a / o鍵均可切換到插入模式
i:游標處于上次所在位置不變
a:游標默認處于上次游標所在位置的下一個位置
o:上次游標所在位置的下一行(會自動換行,使后邊內容后移一行)
3)vim下的基本命令
a.普通模式的基本命令
- yy:復制當前行
- nyy:復制n行內容,從當前游標所在行開始
- p:粘貼
- np:粘貼n行內容其實,將復制到的內容粘貼n次
- dd:洗掉當前行
- ndd:洗掉從當前行開始的n行內容
- u:撤銷上次的操作
- gg:將游標定位到檔案的開始位置
- shift + g:將游標定位到檔案的最后一行的開始位置
- ngg:將游標定位到第n行的開始位置
- shift + 4($):將游標定位到當前行的末尾位置
- shift + 6(^):將游標定位到當前行的開始位置
- b ,w:按照單詞進行前后移動
- nb,nw:前后移動n個單詞
- x,nx:從左向右洗掉游標所在位置的內容(nx洗掉游標所在位置及之后的n個字符的內容)
- shift + x:從右向左洗掉游標所在位置的內容
- shift + ~:批量化大小寫轉換
- h j k l:左下上右移動游標
b.底行模式下的基本命令
- /文本內容 or ?文本內容:查找文本,n選擇下一個
- set nu / nonu:顯示或者取消行號
- vs 檔案名:多檔案顯示,游標在哪個檔案就編輯哪個檔案
c.其他命令(普通模式)
- ctrl + r:反撤銷
- ZZ:保存退出
三、Linux編譯器---gcc/g++
1.gcc編譯C語言程式的程序
C語言程式的編譯分預處理、編譯、匯編和鏈接四步,在gcc下每一步的具體操作如下:
預處理:展開頭檔案、宏替換、去掉注釋、條件編譯
命令:gcc file.c -E -o file.i 使用E選項堆.c檔案進行編譯生成.i檔案
編譯:將c程式編譯形成匯編代碼
命令:gcc file.i -S -o file.s .s檔案為生成的匯編代碼檔案
匯編:將匯編形成二進制目標檔案
命令:gcc file.s -c -o file.o .o檔案為生成的二進制目標檔案
鏈接:將目標檔案和系統庫鏈接形成可執行程式
命令:gcc file.o -o file file為生成的可執行程式
gcc常用選項:-E(.i) -S(.s) -c(.o) -o(可執行程式)
2.函式庫和鏈接方式
1)動態庫和靜態庫
靜態庫:靜態庫是指編譯鏈接時,把庫檔案的代碼全部加入到可執行檔案中,因此生成的檔案比較大,但在運行時也就不再需要庫檔案了,其后綴名一般為“.a”,
動態庫:動態庫與之相反,在編譯鏈接時并沒有把庫檔案的代碼加入到可執行檔案中,而是在程式執行時由運行時鏈接檔案加載庫,這樣可以節省系統的開銷,動態庫一般后綴名為“.so”,如前面所述的 libc.so.6 就是動態庫,gcc 在編譯時默認使用動態庫,完成了鏈接之后,gcc
2)靜態鏈接和動態鏈接
gcc默認使用的是動態庫進行動態鏈接,在編譯時加上-static選項就會使用靜態庫進行靜態鏈接,
靜態鏈接和動態鏈接的比較
動態鏈接:程式體積比較小,節省系統資源;一旦庫確實所有依賴的程式都不可運行了
靜態鏈接:程式體積比較大,浪費系統資源;當庫缺失時不會影響其他程式的執行
四、Linux除錯器---gdb
gdb是Linux下常用的除錯器工具,程式的發布有兩種形式,debug版本和release版本,只有debug版本的程式才能進行除錯(release版本的程式沒有除錯資訊),Linux下默認生成的是release版本的,需要生成debug版本的程式需要加上-g選項即可,
相關命令
- gdb檔案名:開始除錯檔案
- ctrl + d or quit(q):退出除錯
- list(簡寫l) n:顯示第n行的程式(其他行也可能顯示出來)
- list(簡寫l) 函式名:顯示該函式內容
- r or run:執行程式
- n or next:單條執行函式
- s or step:單條執行遇到函式會進入
- break or b行號:在某一行打斷點(也可跟函式名,給該函式打斷點)
- info break:查看斷點資訊
-
fifinish:執行到當前函式回傳,然后挺下來等待命令
-
print(p):列印運算式的值,通過運算式可以修改變數的值或者呼叫函式
-
p 變數:列印變數值,
-
set var:修改變數的值
-
continue(或c):從當前位置開始連續而非單步執行程式
-
run(或r):從開始連續而非單步執行程式
-
delete breakpoints:洗掉所有斷點
-
delete breakpoints n:洗掉序號為n的斷點
-
disable breakpoints:禁用斷點
-
enable breakpoints:啟用斷點
-
info(或i) breakpoints:參看當前設定了哪些斷點
-
display 變數名:跟蹤查看一個變數,每次停下來都顯示它的值
-
undisplay:取消對先前設定的那些變數的跟蹤
-
until X行號:跳至X行
-
breaktrace(或bt):查看各級函式呼叫及引數
-
info(i) locals:查看當前堆疊幀區域變數的值
-
quit:退出gdb
五、Linux專案自動化構建工具make/Makefile
make是一個命令工具,是一個解釋makefifile中指令的命令工具,一般來說,大多數的IDE都有這個命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make,可見,makefifile都成為了一種在工程方面的編譯方法,make是一條命令,makefifile是一個檔案,兩個搭配使用,完成專案自動化構建,
1.原理
1) make會在當前目錄下找名字叫“Makefifile”或“makefifile”的檔案,
2) 如果找到,它會找檔案中的第一個目標檔案(target),在上面的例子中,他會找到“hello”這個檔案,并把這個檔案作為最終的目標檔案,
3) 如果hello檔案不存在,或是hello所依賴的后面的hello.o檔案的檔案修改時間要比hello這個檔案新(可以用 touch 測驗),那么,他就會執行后面所定義的命令來生成hello這個檔案,
4) 如果hello所依賴的hello.o檔案不存在,那么make會在當前檔案中找目標為hello.o檔案的依賴性,如果找到則再根據那一個規則生成hello.o檔案,(這有點像一個堆疊的程序)
5) 當然,你的C檔案和H檔案是存在的啦,于是make會生成 hello.o 檔案,然后再用 hello.o 檔案宣告make的終極任務,也就是執行檔案hello了,
6) 這就是整個make的依賴性,make會一層又一層地去找檔案的依賴關系,直到最終編譯出第一個目標檔案,
7) 在找尋的程序中,如果出現錯誤,比如最后被依賴的檔案找不到,那么make就會直接退出,并報錯,而對于所定義的命令的錯誤,或是編譯不成功,make根本不理,
8) make只管檔案的依賴性,即,如果在我找了依賴關系之后,冒號后面的檔案還是不在,那么對不起,我就不作業啦,
2.依賴關系和依賴方法
依賴關系:在使用gcc命令編譯C語言程式時,如:gcc -c hello.s -o hello.o命令中,需要通過hello.s檔案生成hello.o檔案,即生成hello.o檔案需要依賴hello.s檔案,同樣在Makefile中也需要這樣的依賴關系,例如Makefile中hello.o:hello.s就是依賴hello.s生成hello.o檔案,
依賴方法:在Makefile中除了需要這樣的依賴關系之外,還需要執行這樣依賴關系的依賴方法,Makefile中的依賴方法就形如:gcc -c hello.s -o hello.o這樣的命令,同時需要注意的是Makefile中依賴方法需要以tab鍵開頭,
偽目標:Makefile中.PHONY修飾的表明是一個偽目標,如.PHONY:clean就表示clean是一個偽目標,偽目標的表明該目標總是被執行的,
3.專案清理
在軟體工程專案中,像clean這種,沒有被第一個目標檔案直接或間接關聯,那么它后面所定義的命令將不會被自動執行,不過,我們可以顯示要make執行,即命令——“make clean”,以此來清除所有的目標檔案,以便重編譯,但是一般我們這種clean的目標檔案,我們將它設定為偽目標,用 .PHONY 修飾,偽目標的特性是,總是被執行的,可以將我們的 hello 目標檔案宣告成偽目標,測驗一下
4.示例
//初級版
hello:hello.o //生成hello需要依賴hello.o
gcc hello.o -o hello //上條陳述句所需的依賴方法
hello.o:hello.s //生成hello.o需要依賴hello.s檔案
gcc hello.s -c -o hello.o
hello.s:hello.i
gcc hello.i -S -o hello.s
hello.i:hello.c
gcc hello.c -E -o hello.i
.PHONY:clean //生成clean偽目標
clean:
rm -rf *.i *.s *.o
//中級版,可以使用$@代替待生成檔案,#^代替依賴關系檔案
hello:hello.o //生成hello需要依賴hello.o
gcc $^ -o $@ //上條陳述句所需的依賴方法
hello.o:hello.s //生成hello.o需要依賴hello.s檔案
gcc $^ -c -o $@
hello.s:hello.i
gcc $^ -S -o $@
hello.i:hello.c
gcc $^ -E -o $@
.PHONY:clean //生成clean偽目標
clean:
rm -rf *.i *.s *.o
//高級版,Makefile檔案中可以定義變數
h=hello
h1=hello.o
h:h1 //生成hello需要依賴hello.o
gcc $^ -o $@ //上條陳述句所需的依賴方法
h1:hello.s //生成hello.o需要依賴hello.s檔案
gcc $^ -c -o $@
hello.s:hello.i
gcc $^ -S -o $@
hello.i:hello.c
gcc $^ -E -o $@
.PHONY:clean //生成clean偽目標
clean:
rm -rf *.i *.s *.o //其他檔案名也可以使用定義變數的方式進行替換
六、git在Linux下的使用
1.克隆本地倉庫:git clone 倉庫連接
2.git add 添加代碼
3.git comnit -m ’information‘提交改動到本地
4.git push同步到遠程服務器
Linux下默認使用的是動態鏈接,生成的是release版本
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/254860.html
標籤:其他
上一篇:Mysql桌面工具--SQLyog資源及激活使用方法,告別黑白命令列
下一篇:Linux中常見的指令(二): cp指令,mv指令,echo指令,cat指令,zip指令,unzip指令,tar指令,find指令,grep指令,tree指令
