日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Makefile文件的使用

發布時間:2025/6/15 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Makefile文件的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

先看下面的Makefile代碼:

# Makefile for boot # Programs, flags, etc. ASM??????? = nasm ASMFLAGS??? = -I include/ # This Program TARGET??????? = boot.bin loader.bin # All Phony Targets .PHONY : everything clean all # Default starting position everything : $(TARGET) clean : ????rm -f $(TARGET) all : clean everything boot.bin : boot.asm include/load.inc include/fat12hdr.inc ????$(ASM) $(ASMFLAGS) -o $@ $< loader.bin : loader.asm include/load.inc include/fat12hdr.inc include/pm.inc ????$(ASM) $(ASMFLAGS) -o $@ $<

?
在上述代碼中,以字符#開頭的行是注釋,=是用來定義變量的,這里ASM和ASMFLAGS就是2個變量,要注意的是:使用這些變量的時候要使用如下格式:
$(ASM)和$(ASMFLAGS),
其分別代表 nasm 和 -I include/ ,而不是直接使用他們的原型。
MakeFile語法:
target?? ?:?? ?prerequisites
?? ??? ??? ??? ?command
上述形式的格式代表兩層含義:
1.?? ?要想得到target,需要執行命令command。
2.?? ?target依賴prerequisites,當prerequisites中至少有一個文件比target文件新時,command才被執行。
現在我們根據上述語法來翻譯上述代碼中的最后2行:
loader.bin : loader.asm include/load.inc include/fat12hdr.inc include/pm.inc
?? ?$(ASM) $(ASMFLAGS) -o $@ $<
1.?? ?要想得到loader.bin,需要執行“$(ASM) $(ASMFLAGS) -o $@ $<”。
2.?? ?loader.bin依賴下述文件:
?? ??? ?loader.asm
?? ??? ?include/load.inc
?? ??? ?include/pm.inc
?? ??? ?include/fat12hdr.inc
?? ?當它們中至少有一個比loader.bin新時,command命令被執行。
那么“$(ASM) $(ASMFLAGS) -o $@ $<“?? ?又是什么呢?其中,
$@ 代表 target;
$< 代表prerequisites的第一個名字;
聯系我們之前說的$(ASM)和 $(ASMFLAGS)的含義,我們知道:
$(ASM) $(ASMFLAGS) -o $@ $<
等價于:
nasm -I include/ -o loader.bin loader.asm
在上述Makefile文件中,我們注意到:不但boot.bin和loader.bin兩個文件后面有冒號,everything/clean/all后面也有冒號,可是他們3個并不是3個文件,僅僅是動作名稱而已。如果運行“make clean“,將會執行“rm -f $(TARGET)”,即rm -f boot.bin loader.bin
all后面緊跟的是clean和everything,這表示,如果執行“make all”,clean和everythiny所表示的動作都將分別被執行。
至此,我們已經分析完上述Makefile文件的全部代碼!哦,對了,還有.PHONY沒有分析,其實.PHONY關鍵字表示它后面的名字并不是文件,而僅僅是一種行為的標號。

當我們直接輸入make命令是,make程序會從第一個名字所代表的動作開始執行。在本例中,第一個標號是everything,所以make 和 make everything是一樣的。


總結

以上是生活随笔為你收集整理的Makefile文件的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。