Linux(9.21-9.27)学习笔记
一、Vim的基本操作。
Normal模式下
1.h 鍵 向左移動光標(biāo) ? 2. ?j ?鍵 ?向下移動光標(biāo) ? 3. k 鍵 向上移動光標(biāo) 4.?l鍵 ?向右移動光標(biāo)
?
5.x 鍵 ?刪除光標(biāo)所在位置的字符 6.i 鍵 ?插入文本 7.dw?光標(biāo)移至單詞開頭輸入,刪除整個單詞
?
8.[number] +[command]+[object]?
?
9.p 鍵 在光標(biāo)處重新置入緩沖區(qū)內(nèi)的字符 10.r +[字母]?可以替換光標(biāo)處錯誤的單個字符 11 . [number]+ c + [object] 更改命令,cw更改單詞,c$更改本行。
?
11.Ctrl+g 顯示當(dāng)前光標(biāo)所在位置行數(shù)及文件信息。 12.?Shift+g 跳到末尾行;[行數(shù)]+Shift+g 跳到指定行數(shù)。?
13. / + [xxxx] 從前向后?搜索指定字段;n繼續(xù)查找上次查找字段;Shift+ n 從相反方向查找 14.? +[xxxx] 從后向前搜索指定字段。
15.?% 鍵 ? ?光標(biāo)選中]})括號后按可以查看對應(yīng)括號 16. ?:s/old/new 替換
?
17. :![command] ?用來執(zhí)行外部命令 18.:w ?[FILENAME]
?
19.o 在光標(biāo)下方一行插入字符串 ?O 在光標(biāo)上方一行插入字符串 ? ? ? ? ? ? ?20.a在光標(biāo)所在位置之后插入 A 在光標(biāo)所在行的末尾插入
21.R 進(jìn)入替換模式,ESC退出、? 21. :set [xxxx] 設(shè)置xxxx選項(xiàng)
?
?二.GCC編譯器
基本規(guī)則
?
.c為后綴的文件,C語言源代碼文件;
.a為后綴的文件,是由目標(biāo)文件構(gòu)成的檔案庫文件;
.C,.cc或.cxx 為后綴的文件,是C++源代碼文件且必須要經(jīng)過預(yù)處理;
.h為后綴的文件,是程序所包含的頭文件;
.i 為后綴的文件,是C源代碼文件且不應(yīng)該對其執(zhí)行預(yù)處理;
.ii為后綴的文件,是C++源代碼文件且不應(yīng)該對其執(zhí)行預(yù)處理;
.m為后綴的文件,是Objective-C源代碼文件;
.o為后綴的文件,是編譯后的目標(biāo)文件;
.s為后綴的文件,是匯編語言源代碼文件;
.S為后綴的文件,是經(jīng)過預(yù)編譯的匯編語言源代碼文件。
?
編譯過程?
預(yù)處理:gcc –E hello.c –o hello.i; gcc –E調(diào)用cpp
生成中間文件 編 譯:gcc –S hello.i –o hello.s; gcc –S調(diào)用ccl
翻譯成匯編文件 匯 編:gcc –c hello.s –o hello.o; gcc -c 調(diào)用as
翻譯成可重定位目標(biāo)文件 鏈 接:gcc hello.o –o hello ; gcc -o 調(diào)用ld** 創(chuàng)建可執(zhí)行目標(biāo)文件
實(shí)驗(yàn)樓例題?
?
但是編譯發(fā)生錯誤。
?
?
三. GDB。
基本操作
·???????? gdb programm(啟動GDB)
·???????? b 設(shè)斷點(diǎn)(要會設(shè)4種斷點(diǎn):行斷點(diǎn)、函數(shù)斷點(diǎn)、條件斷點(diǎn)、臨時(shí)斷點(diǎn))
·???????? run 開始運(yùn)行程序
·???????? bt 打印函數(shù)調(diào)用堆棧
·???????? p 查看變量值
·???????? c 從當(dāng)前斷點(diǎn)繼續(xù)運(yùn)行到下一個斷點(diǎn)
·???????? n 單步運(yùn)行
·???????? s 單步運(yùn)行
·???????? quit 退出GDB
·???????? display 跟蹤變量值的改變
·???????? until 跳出循環(huán)
·???????? finish 跳出函數(shù)
·???????? help 幫助
?
?man 命令對其解釋
?
四.MarkFile
基本介紹?
一個工程中的源文件不計(jì)數(shù),其按類型、功能、模塊分別放在若干個目錄中,makefile定義了一系列的規(guī)則來指定,
哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,甚至于進(jìn)行更復(fù)雜的功能操作,因?yàn)?makefile就像一個Shell腳本一樣,其中也可以執(zhí)行操作系統(tǒng)的命令。
makefile帶來的好處就是——“自動化編譯”,一旦寫好,只需要一個make命令,整個工程完全自動編譯,極大的提高了軟件開發(fā)的效率。make是一個命令工具,是一個解釋makefile中指令的命令工具,一般來說,大多數(shù)的IDE都有這個命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可見makefile都成為了一種在工程方面的編譯方法。
?
Makefile的規(guī)則
target ... : prerequisites ...
command
...
Makefile執(zhí)行后的圖...
目標(biāo):依賴
執(zhí)行指令 ...
target也就是一個目標(biāo)文件,可以是Object File,也可以是執(zhí)行文件。還可以是一個標(biāo)簽(Label)。
① prerequisites就是,要生成那個target所需要的文件或是目標(biāo)。
② command也就是make需要執(zhí)行的命令。(任意的Shell命令)
這是一個文件的依賴關(guān)系,也就是說,target這一個或多個的目標(biāo)文件依賴于prerequisites中的文件,其生成規(guī)則定義在command中。說白一點(diǎn)就是說,prerequisites中如果有一個以上的文件比target文件要新的話,command所定義的命令就會被執(zhí)行(command一定要以Tab鍵開始,否者編譯器無法識別command),減少重復(fù)編譯,提高了其軟件工程管理效率。
?
?
?定義變量
?
? ?
?
$*
不包含擴(kuò)展名的目標(biāo)文件名稱。
$+
所有的依賴文件,以空格分開,并以出現(xiàn)的先后為序,可能包含重復(fù)的依賴文件。
$<
第一個依賴文件的名稱。
$?
所有的依賴文件,以空格分開,這些依賴文件的修改日期比目標(biāo)的創(chuàng)建日期晚。
$@
目標(biāo)的完整名稱。
$^
所有的依賴文件,以空格分開,不包含重復(fù)的依賴文件。
$%
如果目標(biāo)是歸檔成員,則該變量表示目標(biāo)的歸檔成員名稱。例如,如果目標(biāo)名稱為
mytarget.so(image.o),則 $@ 為 mytarget.so,而 $% 為 image.o。
AR
歸檔維護(hù)程序的名稱,默認(rèn)值為 ar。
ARFLAGS
歸檔維護(hù)程序的選項(xiàng)。
AS
匯編程序的名稱,默認(rèn)值為 as。
ASFLAGS
匯編程序的選項(xiàng)。
CC
C 編譯器的名稱,默認(rèn)值為 cc。
CFLAGS
C 編譯器的選項(xiàng)。
CPP
C 預(yù)編譯器的名稱,默認(rèn)值為 $(CC) -E。
CPPFLAGS
C 預(yù)編譯的選項(xiàng)。
CXX
C++ 編譯器的名稱,默認(rèn)值為 g++。
CXXFLAGS
C++ 編譯器的選項(xiàng)。
FC
FORTRAN 編譯器的名稱,默認(rèn)值為 f77。
FFLAGS
FORTRAN 編譯器的選項(xiàng)。
?
轉(zhuǎn)載于:https://www.cnblogs.com/L1nke/p/4840905.html
總結(jié)
以上是生活随笔為你收集整理的Linux(9.21-9.27)学习笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL Server blocking
- 下一篇: Linux 命令 - jobs: 显示后