vi 編輯器,gcc 編譯器的使用

 vi編輯器是咱們在linux下常用的文本編輯器,這個東西也是專門爲程序員準備的,基本上每一個Unix和Linux系統都爲咱們提供了這個軟件,咱們可使用vi來編寫咱們的代碼。在vi編輯器下全部操做都必須經過鍵盤和特定的快捷鍵組合來完成,剛開始學習的新手會感受不太容易,可是這個東西很重要,咱們先來學習如何使用它,掌握了這個東西去面試的時候也算是一門技能。而vim是vi的加強版,新增長了不少功能。linux

在shell下輸入命令vi 文件名,例如:vi first.c,就開始編輯first.c文件了。vi編輯器有三種模式,它們分別爲命令模式,底行命令模式和編輯模式,各個模式的轉換以下。c++

vi編輯器的使用

命令模式(按i進入編輯模式。按":"進入底行命令模式)。當咱們vi first.c的時候一進入就是命令模式,在這個模式下,咱們能夠執行以下的操做。
x:刪除一個字符
dd:刪除光標所在行
ndd:刪除n行
p:粘貼光標下行,就是把複製的內容粘貼到光標所在行的下一行。
yy:複製光標所在行
nyy:複製n行
u:恢復上一次操做程序員

編輯模式(按Esc回到命令模式,而後再按下:就到了底行命令模式)。在命令模式的時候咱們按下i鍵就進入了這個模式,這個時候就能夠編輯文字了。咱們輸入的每一個字符都會寫上去,不像命令模式那樣字符表明的是一種命令。面試

底行命令模式 :支持以下的一些經常使用命令,你輸入這些字符的時候觀察vi編輯器的下邊,每一個字符都會出如今底邊的一行,就像一個只有一行的命令窗口。
w:保存文件
q:退出vi編輯器
!:強制
wq:保存退出,這個是咱們常常用的,當咱們寫完代碼的時候就用這個命令,保存退出到shell下。
q!:強制退出 這個也是咱們經常使用的,當咱們看完了本身的代碼,不但願修改的代碼生效,就是這個命令。
%s/str1/str2/g :把當前文件的str1所有替換爲str2
/str:查找字符串str
set nu:顯示行號 在vi編輯器的左側能夠顯示出行號,沒有行號的話就用這個命令顯示。
set nonu:不顯示行號shell

好了vi編輯器就說到這,你們多用幾回就熟了。下面來講gcc編譯器。咱們在windows下寫程序的時候,用的都是圖形化的集成工具,像什麼vc++6.0啦vs各個系列的版本啦,這些工具都集成了代碼的編輯,編譯,連接等操做。可是在linux下就不行了,咱們寫好了代碼須要咱們本身手動的編譯,連接,生成可執行文件。因此說在linux下學習c語言你才真正的瞭解它,能夠學的更加深刻!下面咱們就來講這個工具gcc編譯器。vim

gcc 編譯器
gcc xx.c 使用這個命令就會生成最終的可執行文件a.out(在shell下使用./a.out就能夠執行你的程序了),他把下面的幾步都隱藏了。
1,預處理:針對指令
2,編譯:語法的檢測
3,彙編:從高級語言->彙編語言->機器語言
4,鏈接:把用到的各類資源打包到一塊兒windows

在使用gcc xx.c這個命令的時候咱們帶一些選項字段能夠作一些更改,經常使用的字段以下所示:編輯器

-o 改變目標的文件名 例如gcc first.c -o first這樣的話,最後的可執行文件名就不是a.out了,而是first
-E 預處理
-S 彙編 以上這倆個選項我也不知道怎麼用,反正還沒用過。
-l 連接庫名 這個是要用到的,連接庫的名稱通常是libxxx.so,咱們使用的時候就用 -lxxx就好了
-L 指定庫的路徑 這個也是常常用的
-I 指定頭文件的路徑
-c 只編譯不連接 這個時候不會生產可執行文件,而是編譯之後的.o文件
-Wall 顯示更多的警告
-O一、O二、O3:優化級別函數

動態庫的建立和使用工具

首先咱們說一下什麼是庫,庫說白了就是別人寫好的程序。咱們寫程序不可能從頭開始,確定會調用到這些寫好的庫來爲咱們完成一些功能。庫分爲靜態庫和動態庫,它們都是在連接的時候才使用的。windows下的靜態庫是以.lib結尾的,動態庫是以.dll結尾的,linux下分別是以.a和.so結尾的。靜態庫在連接的時候就會嵌入到程序中,而動態庫是程序在運行的時候纔會調用的,他們的優缺點你們能夠自行百度、google。那麼咱們就來講一下linux下如何建立和使用動態庫吧。動態庫又叫共享庫,它是代碼的合集,在使用的時候提供代碼庫中的地址。

1建立共享庫
寫源代碼
編譯源代碼,生成目標文件add.o。使用命令gcc -c add.c
生成共享庫。使用命令gcc -shared add.o -o libadd.so

2使用動態庫
寫源代碼main.c
編譯gcc -c main.c 
鏈接gcc main.o -ladd -L.
若是直接運行可執行文件會出錯(由於連接的時候只是在可執行文件中寫進去了動態庫中函數的地址,可是動態庫的文件在什麼地方還不知道),須要在運行時配置環境變量LD_LIBRARY_PATH
使用命令:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:. 那個.是個人路徑,你能夠換成你本身的路徑。

相關文章
相關標籤/搜索