Linux - Utility- make

最近在工作上慢慢熟悉Linux上的東西,包括用到的各種工具,其中就包括make。


Linux上的應用軟件普遍遵循的一個原則是:Do one thing and do it well。make就是其中的一個典範。make可用於管理多文件之間的依賴關係,以及根據這依賴關係來更新各個文件。譬如:make最初用於管理軟件代碼文件之間的編譯依賴關係,在C++的開發情景下,.a的文件是.o文件的集合,因此一個.a文件依賴於若干個.o文件,而.o文件是由.cpp(或.c或.cc)文件編譯而來,因此.o文件依賴於.cpp文件;這裏的依賴是指當被依賴者被修改後,依賴者也應當作相應的更新。當然,這個更新的動作不一定是編譯動作,而可以是任意的動作(例如各種的shell命令,如rm、mkdir等等)。而描述多個文件之間的依賴關係,以及更新的動作的數據文件就是常見的Makefile。Makefile裏規定的語法規則就是用來描述事物之間的依賴關係,以及依賴者之間的動作的,這是非常簡潔的抽象,而make工具就負責將這一抽象付諸實現。


雖然看上去make要做的事情非常的簡單,但要做好又是不容易。Makefile的書寫規則五花百門,初看讓人摸不着頭腦。不過無論多麼怪異的規則,也就是規則而已,就像無論是多麼晦澀的表達式,它始終是一個表達式。


其實生活中有很多像多事物之間的依賴以及隨之的動作這樣的抽象存在着,說白了,就是生活其實有各種的抽象。

1)譬如:到了某個時間點(或時間段)某個事物需要執行某個動作,這就是一個很簡單的抽象,任何事物和任何動作都可代入這個抽象而得到具體的實現,而這個抽象在PC系統下也有相應的工具來實現,如Windows系統裏可以設置任務計劃,可設置在登錄時(或某個指定時刻)執行某個動作等。

2)譬如:RSS就是一種很簡單的抽象,其表達的含義是:當某個事物發生變化後,執行響應的動作。這裏的事物可以是博客裏的博文,也可以是某個網站頻道的資訊;執行的動作一般是更新用於簡述這些事物的文件,也可以是通知監聽了這些事物的訂閱者。


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