2012-03-19 7 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あなたのコンパイラCCに渡す(-fno-stack-protector-Eなどのような)オプションです。 $(CC)は実際のコンパイラに置き換えられます。すなわちCCは、これより前にset CC=gccのように初期化する必要があります。

  2. LDFLAGSはあなたのリンカLDに(オプションです。+=この行はxv6.imgbootblockに依存していることを意味ちょうどそれがCFLAGSLDFLAGS

  3. の既存の値に更新しC.でのご+=演算子のようなものですkernelfs.img。それは我々がxv6.imgを構築するために、あなたはbootblockkernelを構築する必要があり、makefs.img最初

  4. を言っているですあなたがここ

    here ddコマンドについて学ぶことができ

makeMakefiles

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

への完全な百科事典のガイドです