Makefile 如何使用GNU make的隐式规则从'foo.s'生成'foo'?
这是我的makefile:Makefile 如何使用GNU make的隐式规则从'foo.s'生成'foo'?,makefile,gnu-make,Makefile,Gnu Make,这是我的makefile: AS=nasm ASFLAGS=-f elf64 %: %.o ${LD} -o $@ $< 但如果我直接运行makefoo,则使用cc $ rm foo foo.o $ make foo cc -f elf64 foo.s -o foo cc: error: elf64: No such file or directory cc: error: unrecognized command line option ‘-f’ make:
AS=nasm
ASFLAGS=-f elf64
%: %.o
${LD} -o $@ $<
但如果我直接运行makefoo,则使用cc
$ rm foo foo.o
$ make foo
cc -f elf64 foo.s -o foo
cc: error: elf64: No such file or directory
cc: error: unrecognized command line option ‘-f’
make: *** [<builtin>: foo] Error 1
链接单个对象文件一节末尾的中对此进行了说明
我应该如何编写makefile,以便可以从foo.s运行make foo以生成foo.o,然后从foo.o自动运行foo?您可以替换:
%: %.o
${LD} -o $@ $<
对于$ASEXES中的每个foo,模式规则如下:
%: %.o
${LD} -o $@ $<
请参阅GNU make手册标题部分。您可以使用以下命令清除默认隐式规则:
%: %.s
请参阅制造手册中的
foo: foo.o
${LD} -o $@ $<
%: %.o
${LD} -o $@ $<
%: %.s