は私のメイクです:GNU makeの暗黙のルールを使って `foo`を` foo.s`から作る方法は?ここで
AS=nasm
ASFLAGS=-f elf64
%: %.o
${LD} -o [email protected] $<
は、私は、ソースファイルfoo.s
があると、私は実行可能foo
を作るために、その後make foo.o
make 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に説明します。私は自動的にfoo.o
からfoo.s
からfoo.o
を作るためにmake foo
を実行してから、foo
ことができるように私は私のMakefileを書く必要がありますどのように
?
うまくいきます。理由を説明してもらえますか? – TheoYou
GNU makeマニュアルへのリンクを追加しました。 –