我正在尝试学习makefile,但我失败了。 一个例子(这是非常原始的),但我应该理解它继续是这一个
f90_simple: f1.o
gfortran f1.o
mv a.out f90_simple
f90_simple.o: f1.f90
gfortran -c f1.f90
它不起作用,我收到此错误 我收到此错误
make: *** No rule to make target `f1.o', needed by `f90_simple'. Stop.
你可以告诉我吗?
感谢
答案 0 :(得分:1)
您的第一条规则规定,在构建f90_simple
之前,必须构建目标f1.o
。
但是你的makefile中没有规则说明如何构建目标f1.o
,并且make找不到任何可以构建它的内置规则(基于源文件make has available),所以它打印出错误。
你确实有一条规则告诉你如何建立一个目标f90_simple.o
......但这并不是目标制造商正在寻找的。您最有可能希望您的makefile为:
f90_simple: f1.o
gfortran $^
mv a.out $@
f1.o: f1.f90
gfortran -o $@ -c $<
或者:
f90_simple: f90_simple.o
gfortran $^
mv a.out $@
f90_simple.o: f1.f90
gfortran -o $@ -c $<
但你不能混淆和匹配它们,或者不知道该怎么做。
我认为至少阅读The GNU Make Manual中的介绍性章节,你真的会受益。