linux 系統的 ctags 以及Makefile的應用

1.ctags(Linux代碼查看)


ctags -R :在當前目錄下建立索引。 



ctrl + ]: 跳轉到函數或變量的定義處






ctrl + T  :  跳轉至上級 




2.Makefile的應用


會不會寫makefile,從一個側面說明了一個人是否具備完成大型工程的能力。 


一般來說,無論是C、C++、還是 pas,首先要把源文件編譯成中間代碼文件,在Windows下也就是 .obj 文件,UNIX下 是 .o 文件,即 Object File,這個動作叫做編譯(compile)。然後再把大量的Object File合成執行文件,這個動作叫作鏈接(link)。 


 

創建一個Makefile文件:


test:test.o
            gcc -o test test.o(前面加@  屏蔽輸出)
 test.o:test.s
            gcc -c test.s -o test.o
test.s:test.i
            gcc -S test.i -o test.s
test.i:test.c
            gcc -E test.c -o test.i

.PHONY:clean    (作爲僞目標)
clean:    
             rm -f test.o test.s test.i




創建一個test.c的小程序,用make指令去調用:




在這裏說一下Makefile是如何工作的:

1.make會在當前目錄下找名字叫“Makefile”或“makefile”的文件。        

2.如果找到,它會找文件中的第一個目標文件(test),在上面的例子中,他會找到“test”這個文件,並把這個文件作爲最終的目標文件。

3.如果“test”文件不存在,或是“test”所依賴的後面的 .o 文件的文件修改 時間要比"test"這個文件新,那麼,他就會執行後面所定義的命令來生成“test”這個文件。

4.如果“test”所依賴的.o文件也存在,那麼make會在當前文件中找目標爲.o文件的依賴性,如果找到則再根據那一個規則生成.o文件。(這 有點像一個堆棧的過程)

5.當然,你的.c文件是存在的,於是make會生成 .o 文件,然後再用 .o 文件聲明make的終極任務,也就是執行文件“test”了。

 

 

清空目標文件:

      每個Makefile中都應該寫一個清空目標文件(.o和執行文件)的規則,這不僅便於 重編譯,也很利於保持文件的清潔。這是一個“修養”。

      一般的風格都是:

       clean:            

rm edit$(objects) 

更爲穩健的做法是:

       .PHONY : clean

       clean :               

-rm edit$(objects) 

.PHONY意思表示clean是一個“僞目標”。而在rm命令前面加了一個小減號的意思就是,也許某些文件出現問題,但不要管,繼續做後面的事。當然,clean的規則不要放在文件的開頭,不然,這就會變成make的默認目標,相信誰也不願意這 樣。不成文的規矩是——“clean從來都是放在⽂文件的最後”。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章