Makefile學習筆記(二)

2021-09-26 21:17:15 字數 802 閱讀 5343

每乙個 .o檔案都有一組依賴檔案,而這些 .o檔案又是執行檔案 edit 的依賴檔案。依賴關係的實質就是說明了目標檔案是由那些檔案生成(目標檔案是由那些檔案更新)。事實上make並不管命令是怎麼工作的,只管執行所定義的命令。make會比較targets檔案和prerequisites檔案的修改日期,如果prerequisites檔案的日期比targets的日期要新,又或者targets檔案不存在,那麼make就會執行後續定義的命令。

在預設的方式下,我們只輸入make命令後。make會在當前目錄下找到名字叫「makefile」或「makefile」的檔案,然後會找到檔案中的第乙個目標檔案(target),在上面的例子中,它會找到「edit」這個檔案,並把這個檔案作為最終的目標檔案。如果 edit 檔案不存在,或是 edit 所依賴的後面的 .o 檔案的檔案修改時間要比 edit這個檔案新,那麼,他就會執行後面所定義的命令來生成 edit 這個檔案。如果 edit 所依賴的.o 檔案也存在,那麼 make 會在當前檔案中找目標為.o 檔案的依賴性,如果找到則再根據那乙個規則生成.o 檔案。於是 make 會生成 .o 檔案,然後再用 .o 檔案生命 make 的終極任務,也就是執行檔案 edit 了。

make會一層一層的去找檔案的依賴關係,直到最終編譯出第乙個目標檔案。若在找尋的過程**現錯誤,比如最後被依賴的檔案找不到,那麼make就會直接退出並報錯。

makefile學習筆記(二)

乙個示例 我們的工程有8個c檔案和3個頭檔案,需要寫乙個makefile來告訴make命令如何編譯和鏈結這幾個檔案。規則是 1 如果這個工程沒有編譯過,那麼所有的c檔案都要編譯並被鏈結。2 如果這個工程的某幾個c檔案被修改,那麼我們只編譯被修改的c檔案,並鏈結目標程式。3 如果這個工程的標頭檔案改變...

makefile學習筆記 makefile概述

20180411 makefile學習筆記 makefile概述 makefile主要是在unix下軟體編譯時寫的,window下一般不用 unix裡makefile做的事 相當於window裡ide所做的事 會不會寫makefile,從乙個側面說明了乙個人是否具備完成大型工程的能力。makefil...

Makefile學習筆記

makefile for boot asm nasm 定義變數 asmflags i include run qemu system i386 hdd boot.img boot.img boot.asm asm boot.asm f bin o boot.img install run clean...