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從來都是放在⽂文件的最後”。