java shell Ubuntu 微软 apache centos 编程 nginx 云计算 php 开源 google linux mysql wordpress Python Firefox Android Windows 程序员

mikefile的工作原理

  或許很多Winodws的程序員都不知道這個東西,因為那些Windows的IDE都為你做了這個工作,但我覺得要作一 個好的和professional的程序員,makefile還是要懂。這就好像現在有這麽多的HTML的編輯器,但如果你想成為一個專業人士,你還是要 了解HTML的標識的含義。特別在Unix下的軟件編譯,你就不能不自己寫makefile了,會不會寫makefile,從一個側面說明了一個人是否具 備完成大型工程的能力。 

  因為,makefile關系到了整個工程的編譯規則。一個工程中的源文件不計數,其按類型、功能、模塊分別放在若幹個目錄中,makefile定 義了一系列的規則來指定,哪些文件需要先編譯,哪些文件需要後編譯,哪些文件需要重新編譯,甚至於進行更復雜的功能操作,因為makefile就像一個 Shell腳本一樣,其中也可以執行操作系統的命令。 

 makefile帶來的好處就是——“自動化編譯”,一旦寫好,只需要一個make命令,整個工程完全自動編譯,極大的提高了軟件開發的效率。 make是一個命令工具,是一個解釋makefile中指令的命令工具,一般來說,大多數的IDE都有這個命令,比如:Delphi的 make,Visual C++的nmake,Linux下GNU的make。可見,makefile都成為了一種在工程方面的編譯方法。 

 在默認的方式下,也就是我們只輸入make命令。那麽,

    1、make會在當前目錄下找名字叫“Makefile”或“makefile”的文件。
    2、如果找到,它會找文件中的第一個目標文件(target),在上面的例子中,他會找到“edit”這個文件,並把這個文件作為最終的目標文件。
    3、如果edit文件不存在,或是edit所依賴的後面的 .o 文件的文件修改時間要比edit這個文件新,那麽,他就會執行後面所定義的命令來生成edit這個文件。
    4、如果edit所依賴的.o文件也不存在,那麽make會在當前文件中找目標為.o文件的依賴性,如果找到則再根據那一個規則生成.o文件。(這有點像一個堆棧的過程)
    5、當然,你的C文件和H文件是存在的啦,於是make會生成 .o 文件,然後再用 .o 文件生命make的終極任務,也就是執行文件edit了。

延伸阅读

评论