這裏是我的makefile:如何使用GNU make的隱式規則從`foo.s`創建`foo`?
AS=nasm
ASFLAGS=-f elf64
%: %.o
${LD} -o [email protected] $<
假設我有一個源文件foo.s
,我可以運行make foo.o
然後make foo
使可執行foo
。
$ make foo.o
nasm -f elf64 -o foo.o foo.s
$ make foo
ld -o foo foo.o
但是,如果我直接運行make foo
,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
這在the documentation說明的,在「鏈接的單個對象文件」的部分的端部。
我應該如何寫我的makefile文件,這樣我可以運行make foo
使從foo.s
foo.o
然後從foo.o
自動foo
?
它確實有效。你願意解釋爲什麼嗎? – TheoYou
我添加了GNU make手冊的鏈接 –