ctags 和Makefile的簡單使用

ctags程序員

ctags是vim下方便代碼閱讀的工具。儘管ctags也能夠支持其它編輯器,可是它正式支持的只有VIM。而且VIM中已經默認安裝了Ctags,它能夠幫助程序員很容易地瀏覽源代碼。(尤爲是大型的工程)vim

1、安裝ctags數組

一、命令行安裝編輯器

切換到root用戶之下,輸入yum install ctagside

二、下載源碼安裝(網上提供的方法)函數

       1)從http://ctags.sourceforge.net/下載源代碼包後,解壓縮生成源代碼目錄,工具

       2)而後進入源代碼根目錄執行./configure,ui

       3)而後執行make,spa

       4)編譯成功後執行make install操作系統


2、簡單的使用

        1)ctags-R:在當前目錄下創建索引

        2)Ctrl + ](右方括號) :跳轉到函數或變量的定義處

        3)Ctrl + T :跳轉至上級

例如:

一個工程中含有my_tags.h、ctags.c、main.c三個源文件

內容分別爲

wKiom1dJT9HBXS9qAACcGH-hhaM903.png

輸入ctags - R在當前目錄下面建立一個索引

wKioL1dJUayC7T8yAABWuigz-LA489.png

打開main.c或者my_tags.h,將光標放到fun處,按ctrl + ]便可跳轉到函數定義處

再按ctrl +T跳轉 至上級


Makefile

        會不會寫makele,從一個側面說明了一我的是否具有完成大型工程的能力。 一個工程中的源文件不計數,其按類型、功能、模塊分別放在若干個目錄中,makele 定義了一系列的規則來指定,哪些文件須要先編譯,哪些文件須要後編譯,哪些文件須要從新編譯,甚至於進行更復雜的功能操做,由於makele就像一個Shell腳本同樣, 其中也能夠執行操做系統的命令。makele帶來的好處就是——「自動化編譯」,一旦寫 好,只須要一個make命令,整個工程徹底自動編譯,極大的提升了軟件開發的效率。


make是一個動做而Makefile是一個文件

make命令執行時,須要一個 Makele 文件,以告訴make命令須要怎麼樣的去編譯和連接程序。

 

Makefile文件中主要是文件的依賴關係和依賴方式。

  在定義好依賴關係後,後續的那一行定義瞭如何生成目標文件的操做系統命令,必定要以Tab鍵開頭。make並無論命令是怎麼工做的,他只管執行所定義的命令。

  make是如何工做的?

  (1) make會在當前目錄下找名字叫「Makefile」或「makefile」。

  (2) 若是找到,它會找文件中的第一個目標文件.o。

  (3) 若是文件不存在,它會根據依賴關係找.s文件。

  (4) 若.s文件不存在,make會在當前文件中找目標爲.s文件的依賴性即.i。

  (5) 若.i文件不存在,根據依賴關係會找.c文件,固然.c文件時存在的啦。因而,make會生成一個.o文件,而後去執行文件。


  這就是整個make的依賴性,make會一層一層去找文件的依賴關係,直到最終編譯出第一個目標文件。在找的過程當中,若是出錯,如:最後被依賴的文件找不到,make會直接退出,並報錯,對於定義的命令的錯誤或者編譯不成功,make無論。make只管文件的依賴性,即若是找到依賴關係以後,冒號後邊的文件不存在,make也不工做。


  清理目標文件的規則:

  每個Makefile中都應該寫一個清理目標文件(.o和執行文件)的規則,這不只便於重編譯,也有利於保持文件的清潔。

  .PHONY:clean

  clean:

       rm -f 文件

  .PHONY後邊的clean事宜「僞目標」。在rm命令前面加上一個小減號的意思是,就算某些文件處理問題,不要管,繼續作後邊的事情。不要將clean的規則放到文件的開頭,否則出成爲make的默認目標。

例如:爲proc.c編寫一個Makefile

在proc.c當前目錄下建立一個Makfile文件,並在Makefile文件中編輯以下

wKiom1dJW4ajv2fkAABhU0bH99Q615.png

或者

wKiom1dJXEbQ0VL1AAA-dOe150Y344.png

運行Makefile

make

wKioL1dJXcWxsz3nAABLJpXGgX4905.png

清除Makefile產生的多餘文件

make clean


注意事項:

一、編寫依賴方式時,必定要以Tab鍵開頭(不能用空格代替)

二、clean通常都放在文件的最後

三、@能夠屏蔽輸出依賴方式

四、makefile 默認值生成一個目標文件,就中止



在Linux下編寫一個簡單的進度條

在編寫以前先來了解一個奇妙的現象,有"\n"

wKiom1dJX3TDRfmVAAAcNVYrJBc447.png 


運行結果爲:

wKioL1dJYOWykJ3EAAAzhCC5hOE726.png


hello world早早運行完畢可是2秒以後程序纔會運行完畢 


wKiom1dJYQugKQoiAAAfNQiy33A322.png


運行結果

wKioL1dJYriyTp6_AAAiWR9pSHM411.png

系統2秒以後纔會輸出hello world


這是爲何呢?

注意:'\n'回車並換行,執行printf時先寫到行緩衝,遇到\n的時候將行緩衝的內容刷出 

因此第一個程序中是先輸出hello world而後再休眠,第二個程序中,因爲沒有'\n',因此不會輸出hello world,當程序運行完畢以後,系統會自動刷新緩衝區,這時纔會輸出hello world。


進度條實現原理


1)實現動態的增加

能夠定義一個數組,並設置一個計數器,當數字增長的同時,給字符數組每次增長一個元素,而且打印時覆蓋以前的數組。

2)保證打印信息在同一行

每次將光標定位到最左邊,從光標處打印,使用’\r‘,回車

3)複製動態的效果實現

定義一個數組

char index[4] = {'|', '/', '-', '\\'};

index[count%4];

4)實現打印長度相同

%-100s 

5)給人複製的效果

每輸出一次,程序掛起一段時間


實現代碼

wKiom1dJaBrBCm9KAACAoPx7R5A440.png


效果

wKiom1dJaGmwMQf4AAAwK2KDu3c702.png

wKiom1dJaHyCqj1qAAASVjRgXQE063.png

相關文章
相關標籤/搜索