linux中的ctags與make命令

  1. ctags命令

    ctags是vim下方便代碼閱讀的工具。

       首先呢,先創建ctag.h,ctag.c,test.c三個文件。

       ctag.h 中爲函數的聲明。

       test.c中爲函數的定義。

       ctag.c爲主函數。

      wKioL1dJQrvRNgnRAABIL5c5aYY511.png


    使用ctrl + R這條命令會在當前目錄下產生一個“tags”文件,當用戶在當前目錄中運行vi時,會自動載入此tags文件。

   將光標放在函數處時,使用 ctrl + ] 時,跳到函數的定義處。使用 ctrl + t時,跳到函數的聲明處。

2.make命令

  make 是命令,而Makefile是一個文件,在make命令執行時,需要一個Makefile文件,以告訴make命令需要怎樣去編譯和鏈接程序。

   Makefile---自動化編譯,一旦寫好,只需一個make命令,整個工程完全自動編譯,極大的提高的軟件開發的效率。


  在介紹make之前呢,我們先來理解一下‘\n’。

  我們都知道‘\n’是回車換行。

  回車是光標重新回到本行開頭(可能會覆蓋之前的內容),換行是光標往下一行(不一定到下一行行首)。

首先呢,先來看這樣一個例子:


printf語句中'\n',在執行時,屏幕上會直接輸出hello bit,然後等待兩秒。結果如右圖所示。

  wKiom1dJLSqj6FyGAAAnRR0rzZY712.png        wKioL1dJLt6zWui8AAASxUTz2mo401.png


若將printf語句中的'\n'去掉,屏幕上會先等待兩秒,然後輸出hello bit。結果如下圖所示。

wKioL1dJLt_wRU2VAAAQh8Ex1Uk144.png


注:在執行語句的過程中,若遇到'\n'時,會刷新緩衝區。所以在printf語句中存在'\n'時,執行此語句時,遇到'\n',所以會直接在屏幕上輸出結果。


  上述已經說過,make在執行的時候,需要一個Makefile文件。

  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的默認目標。

clean從來都放在文件的最後

                                     proc.c文件

wKiom1dJQJrCQnQ3AABS_hxNwAk047.png

  注:fflush(stdout):清空輸出緩衝區,並把緩衝區內容輸出

                                    Makefile文件

wKiom1dJP1mjqwCAAABRPUK8koc875.png


結果:

    wKioL1dJQeyghgXbAAAzxG4e35E562.png



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章