Linux下的vim编辑器与gcc编译器及静动态库的制作
1.vim編輯器的使用:
(1)vim的三種模式:
命令模式:打開文件默認進入命令模式
編輯模式:需要輸入一些命令切換到編輯模式
末行模式:在末行模式可以輸入一些命令
命令模式aios和AIOS都可以進入編輯模式
編輯模式esc可以進入命令模式
命令模式用:可以進入末行模式
末行模式兩下esc可以進入命令模式
末行模式不可以和編輯模式相互轉換
(2)命令模式下的操作(所有的刪除操作都可以看成剪切):
h:光標左移
j:光標上移
k:光標下移
l:光標右移
0:光標移動到本行行首
$:光標移動到本行行尾
gg:移動到文件的頭處
G:移動到文件的尾部
數字+G:跳轉指定的行數
x:刪除光標后邊的一個字母
X:刪除光標后邊的一個字母
dw(注意把光標移動到單詞的詞頭):刪除一個單詞
d0:刪除本行光標前面的數據
D(或者d加shift4):刪除本行光標后邊的數據
dd:刪除當前光標所在的行
數字+dd:刪除從本行開始指定的數字行數
u:撤銷
ctrl+r:反撤銷
yy:復制光標本行內容
數字+yy:復制從本行開始后邊的指定數字行數
P:粘貼到光標的所在行(如果本行有內容那么把內容下移一行)
p:粘貼到光標所在的小一行(如果下一行有內容那么把下一行再往下移動一行)
r:光標覆蓋的字符可以更改(只是一個字符)
<<:向左縮進(前面可以跟數字)
>>:向右縮進(前面可以加數字)
K(光標放在該字符串上):可以查找函數等再man里邊的內容
v:進入可視化操作
y(可視化):進入可視化操作后的復制
d(可視化):進入可視化操作的刪除
P(可視化):把復制的文本放在光標所在的位置
p(可視化):把復制的文本放在光標所覆蓋單詞后邊
查找文件的內容:
第一種方式: /+字符串
第二種方式:?+字符串
第三種方式:在文本里選定指定字符串,按#
這三種方法都可以按N/n進行遍歷
(3)編輯模式下的操作:
a:在光標覆蓋的字符的后邊進行插入
A:把光標移動到本行尾部
i:在光標覆蓋字符前面插入
I:把光標移動到本行的頭部進行插入
o:在光標所處行的下一行開辟新的一行進行插入
O:在光標所處位置的上面一行進行插入
s:刪除光標所覆蓋的字符進行插入
S:刪除本行所有的字符再重新編輯本行
(4)末行模式下的操作
輸入:進入末行模式
在末行模式輸入數字就會跳轉到某一行
字符串的替換:
s/需要替換的字符串/新的字符串: 只能替換光標所在行的第一個需要替換的字符串
s/需要替換的字符串/新的字符串+/g:替換所有光標所在行指定需要替換的字符串
數字+,+數字+s/需要替換的字符串/新的字符串+/g:替換兩個數字之間的所有行數需要替換的字符串
關于文本的保存:
q:不保存后退出
w:保存
wq:保存并退出
關于vim的分屏:
sp(可加當前目錄的其它文件):為當前文件水平分層
vsp(可加當前目錄的其它文件):垂直分屏
ctrl+ww:在兩個屏幕之間切換
q:在分屏模式下,光標在那就退出那個窗口
qall:在分屏模式下把窗口有都刪除
此外的w,wq同q
2.gcc編譯器
(1)首先gcc編譯器的工作原理:
(2) 這里注意預處理時和編譯成匯編文件的參數是大寫,到二進制文件是小寫,也可以直接把.c文件直接編譯成可執行文件直接把直接進行gcc+.c文件±o+可執行文件名-o對生成文件的名字做出一個指定
(3)當我們需要指定頭文件時可以使用-I來指定頭文件所在的地方
例如:== gcc c_program/a.c -I dir2/bb -o a.out==:就是指定并編譯家目錄下的c_program的文件下的a.c文件,然后a.c文件里的頭文件包含在了家目錄下的dir2目錄下的bb目錄里再利用-o為生成的文件取名(注意這里頭文件只需要指定到其所在的目錄即可)
(4) 當我們在編譯的時候需要指定宏定義的時候使用-D就行了如: gcc a.c -D acm -o a.outt
(5)-O編譯時優化代碼分三級0,1,2,3(0不優化,123優化程度逐漸加深)
(6)-Wall顯示警告信息:即使程序是對的,如果有一個變量定義了但是沒使用也會有警告信息的
(7)-g添加一些調制信息
3.靜態庫:
(1) 靜態庫就是讓程序員寫的程序給用戶完成指定功能(給定指定的靜態庫和頭文件)用戶可以用功能但是用戶拿不到源碼所有的維護都要程序員來修改源碼。
(2)靜態庫的命名規則:
lib+靜態庫名+.a
(3)關于制作靜態庫的具體方法:
把所有需要用到的.c文件全部變成.o文件:gcc *.c -c
然后打包.o文件就合成一個靜態庫:ar rcs +靜態庫名+需要的.o文件
(4)關于使用靜態庫的具體案例:
首先在dir目錄里有四個目錄
include:頭文件包含目錄
lib:靜態庫目錄
main.c:需要靜態庫輔助的用戶.c文件
src:靜態庫的源碼
第一步把src里邊的.c編譯成.o文件
第二步把生成的.o文件生成靜態庫
第三步把靜態庫移動到lib目錄小
第四步就可以把靜態庫和include目錄給用戶
第五步用戶利用這兩個文件就可以實現自己的代碼,具體是gcc main.c lib/靜態庫名±I+包含的頭文件所在目錄+ -o+生成的可執行文件的名字
對于第五步
還有一種做法:gcc main.c -L+靜態庫所在目錄±l+所用靜態庫(不帶lib和.a)±o+生成可執行文件米名
(第一個L大寫第二個l是小寫)
(5)靜態庫的優缺點:
靜態庫是打包了.o文件,那么使用靜態庫實現的可執行文件,只要用戶寫的原文件包含其中一個.o文件的函數那么可執行文件就會打包靜態庫里邊這個.o文件所有內容放在可執行文件中
靜態庫的優點:
發布程序時候不用提供庫(可執行程序已經包含庫里邊的內容)
加載庫的速度塊
靜態庫的缺點:
庫被打包進入應用程序里邊導致應用程序的體積增大
如果庫發生了改變那么需要重新編譯源文件
4.動態庫(共享庫)
(1)共享庫的命名規則:
lib +名字+.so;
(2)動態庫的創建過程:
第一步生成與位置無關的代碼:靜態庫打包成與位置有關的代碼,在每一個應用程序啟動時linux系統都會生成一個虛擬化的內存空間由于使用靜態庫實現的應用文件靜態庫里邊的內容被包含在內所以每次打開時被包含的靜態庫就會加載在虛擬化內存空間的相同位置,所以生成的.o文件稱為與位置有關的代碼,動態庫不會把庫里邊的東西打包到可執行程序中只是做了記錄,當程序啟動后才會加載動態庫(由于在動態庫的位置不固定所以被稱為與位置無關的代碼),實際上也是要生成.o文件
gcc *.c -fpic -c -I+頭文件目錄所在位置
第二部將生成的.o文件打包:
gcc -shared -o +生成動態庫的名字+要打包的.o文件(全部的話時*.o)±I+頭文件所在目錄
使用和靜態庫一樣
總結
以上是生活随笔為你收集整理的Linux下的vim编辑器与gcc编译器及静动态库的制作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux压缩包和用户管理及开关机指令
- 下一篇: Linux下的gdb调试makefile