我正在阅读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?能推荐几本好书吗?
谢谢!
最佳答案
CFLAGS
是您传递给编译器的选项(如-fno-stack-protector
-E
等)CC
.$(CC)
将被实际的编译器取代。即CC
应该在此之前用set CC=gcc
之类的东西初始化.LDFLAGS
是选项(对于您的链接器LD
。+=
就像您在 C 中的+=
运算符一样。它更新为CFLAGS
和LDFLAGS
的现有值这一行表示
xv6.img
依赖于bootblock
kernel
fs.img
.那就是我们告诉make
那,为了 buildxv6.img
, 你需要构建bootblock
kernel
和fs.img
首先
可以了解dd命令here
这里是完整的百科全书指南 make
和 Makefiles
关于c - xv6 的 Makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9765443/