了解 XV6 makefile 中的代码块
Understanding code block from XV6 makefile
我试图从 XV6 makefile 中理解以下代码块:
ULIB = ulib.o usys.o printf.o umalloc.o
_%: %.o $(ULIB)
$(LD) $(LDFLAGS) -N -e main -Ttext 0 -o $@ $^
$(OBJDUMP) -S $@ > $*.asm
$(OBJDUMP) -t $@ | sed '1,/SYMBOL TABLE/d; s/ .* / /; /^$$/d' > $*.sym
在哪里可以找到解释上述所有选项的参考资料?例如,我试图在 GNU 网站上寻找选项“-N”,但没有找到。
提前致谢
我不是 Makefile 方面的专家,但您可能正在寻找一些 GNU 程序的 man
页。
这一行,例如:
$(LD) $(LDFLAGS) -N -e main -Ttext 0 -o $@ $^
如果我理解正确的话,是 bash
和 make
语法的混合:
$(LD)
替换为 make
变量 LD
,它很可能包含链接器可执行文件的名称(通常为 ld
)。
$(LDFLAGS)
与上面类似,区别在于它持有 标志 以传递给 LD
.[=41= 中命名的可执行文件]
-N -e main -Ttext 0 -o
只是 LD
的参数
$@
替换为目标
$^
替换为 space 分隔的所有依赖项列表
因此,如果您想了解 -N
选项,最好的选择是 GNU ld man page:
-N
--omagic
Set the text and data sections to be readable and writable. Also, do not page-align the data segment, and disable linking against shared libraries. If the output format supports Unix style magic numbers, mark the output as "OMAGIC". Note: Although a writable text section is allowed for PE-COFF targets, it does not conform to the format specification published by Microsoft.
我试图从 XV6 makefile 中理解以下代码块:
ULIB = ulib.o usys.o printf.o umalloc.o
_%: %.o $(ULIB)
$(LD) $(LDFLAGS) -N -e main -Ttext 0 -o $@ $^
$(OBJDUMP) -S $@ > $*.asm
$(OBJDUMP) -t $@ | sed '1,/SYMBOL TABLE/d; s/ .* / /; /^$$/d' > $*.sym
在哪里可以找到解释上述所有选项的参考资料?例如,我试图在 GNU 网站上寻找选项“-N”,但没有找到。
提前致谢
我不是 Makefile 方面的专家,但您可能正在寻找一些 GNU 程序的 man
页。
这一行,例如:
$(LD) $(LDFLAGS) -N -e main -Ttext 0 -o $@ $^
如果我理解正确的话,是 bash
和 make
语法的混合:
$(LD)
替换为make
变量LD
,它很可能包含链接器可执行文件的名称(通常为ld
)。$(LDFLAGS)
与上面类似,区别在于它持有 标志 以传递给LD
.[=41= 中命名的可执行文件]-N -e main -Ttext 0 -o
只是LD
的参数
$@
替换为目标$^
替换为 space 分隔的所有依赖项列表
因此,如果您想了解 -N
选项,最好的选择是 GNU ld man page:
-N
--omagic
Set the text and data sections to be readable and writable. Also, do not page-align the data segment, and disable linking against shared libraries. If the output format supports Unix style magic numbers, mark the output as "OMAGIC". Note: Although a writable text section is allowed for PE-COFF targets, it does not conform to the format specification published by Microsoft.