Makefile из xv6 - PullRequest
       17

Makefile из xv6

0 голосов
/ 19 марта 2012

Я читаю код 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 Ответ

2 голосов
/ 19 марта 2012
  1. CFLAGS - это параметры (например, -fno-stack-protector -E и т. Д.), Которые вы передаете компилятору CC.$(CC) будет заменено фактическим компилятором.т.е. CC должен быть инициализирован перед этим чем-то вроде set CC=gcc.

  2. LDFLAGS - это параметры (для вашего компоновщика LD. += аналогичен вашему оператору += в C. Он обновляет уже существующее значение CFLAGS и LDFLAGS

  3. Эта строка означает, что xv6.img зависит от bootblock kernel fs.img. То есть make мы говорим, чтобысборка xv6.img, вам нужно собрать bootblock kernel и fs.img сначала

Узнать о команде dd можно здесь

Вот полное энциклопедическое руководство по make и Makefiles

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

...