2012-03-19 62 views
0

我在讀取xv6的代碼,發現很難閱讀Makefile文件。 你能告訴我下面的語句是如何工作的:xv6的Makefile文件

1. "CFLAGS += $(shell $(CC) -fno-stack-protector -E -x c /dev/null >/dev/null 2>&1 && echo -fno-stack-protector)" 
2. "LDFLAGS += -m $(shell $(LD) -V | grep elf_i386 2>/dev/null)" 
3. "xv6.img: 
bootblock kernel fs.img 

dd if=/dev/zero of=xv6.img count=10000 

dd if=bootblock of=xv6.img conv=notrunc 

dd if=kernel of=xv6.img seek=1 conv=notrunc" 

而如何學習Makefile文件中的細節?你可以推薦一些好書嗎?

謝謝!

回答

1
  1. CFLAGS是(像-fno-stack-protector-E等)傳遞給你的編譯器CC的選項。 $(CC)將被實際的編譯器替換。即CC應在此之前初始化,如set CC=gcc

  2. LDFLAGS是選項(您連接LD+=就像在C中+=運營商,它更新到CFLAGS已經存在的價值和LDFLAGS

  3. 此行意味着xv6.img取決於bootblockkernelfs.img。也就是說我們告訴make,爲了構建xv6.img,您需要製作bootblockkernelfs.img第一個

您可以瞭解DD命令here

下面是完整的百科全書式的指南makeMakefiles

http://www.gnu.org/software/make/manual/make.html