用于编译的原始makefile失败

时间:2017-06-03 23:29:07

标签: linux makefile

我正在尝试学习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.
你可以告诉我吗?

感谢

1 个答案:

答案 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中的介绍性章节,你真的会受益。