Makefile causes `gfortran: error: No such file or directory`
Makefile causes `gfortran: error: No such file or directory`
我正在尝试用 gfortran 编译这段代码。
生成文件:
# makefile for BIRRP
FC = gfortran
FCFLAGS = -g -fbounds-check
FLFLAGS = -g -fbacktrace
SRC = birrp.f coherence.f dataft.f diagnostic.f fft.f filter.f math.f rarfilt.f response.f rtpss.f utils.f weight.f zlinpack.f
# "make" builds all
PROGRAM = birrp
all: $(PROGRAM)
$(PROGRAM): $(SRC)
$(FC) $(FCFLAGS) $@ $<
%.o: %.f
$(FC) $(FLFLAGS) -o $@ $^
clean:
rm -f *.o
没用
gfortran -g -fbounds-check birrp birrp.f
gfortran: error: birrp: No such file or directory
Makefile:13: recipe for target 'birrp' failed
make: *** [birrp] Error 1
我正在使用 gfortran 编译器。我已经从我的其他程序中复制了 Makefile。
添加后-o
:
FC = gfortran
FCFLAGS = -g -c -fbounds-check
FLFLAGS = -g -fbacktrace
SRC = birrp.f coherence.f dataft.f diagnostic.f fft.f filter.f math.f rarfilt.f response.f rtpss.f utils.f weight.f zlinpack.f
# "make" builds all
PROGRAM = birrp
all: $(PROGRAM)
$(PROGRAM): $(SRC)
$(FC) $(FCFLAGS) -o $@ $<
%.o: %.f
$(FC) $(FLFLAGS) -o $@ $^
clean:
rm -f *.o
现在可以编译了
gfortran -g -c -fbounds-check -o birrp birrp.f
为什么?
gfortran
将 birrp 解释为源文件,但您希望它作为 outfile
.
man gfortran
表示 outfile
由 -o
参数指定,因此您的目标变为:
$(PROGRAM): $(SRC)
$(FC) $(FCFLAGS) -o $@ $<
但这并不能解决你所有的问题。根据 GNU Make manual $<
指定 第一个依赖项 而不是全部。您总是希望拥有完整的依赖项列表,即 $^
.
所以你的目标变成了:
$(PROGRAM): $(SRC)
$(FC) $(FCFLAGS) -o $@ $^
我正在尝试用 gfortran 编译这段代码。
生成文件:
# makefile for BIRRP
FC = gfortran
FCFLAGS = -g -fbounds-check
FLFLAGS = -g -fbacktrace
SRC = birrp.f coherence.f dataft.f diagnostic.f fft.f filter.f math.f rarfilt.f response.f rtpss.f utils.f weight.f zlinpack.f
# "make" builds all
PROGRAM = birrp
all: $(PROGRAM)
$(PROGRAM): $(SRC)
$(FC) $(FCFLAGS) $@ $<
%.o: %.f
$(FC) $(FLFLAGS) -o $@ $^
clean:
rm -f *.o
没用
gfortran -g -fbounds-check birrp birrp.f
gfortran: error: birrp: No such file or directory
Makefile:13: recipe for target 'birrp' failed
make: *** [birrp] Error 1
我正在使用 gfortran 编译器。我已经从我的其他程序中复制了 Makefile。
添加后-o
:
FC = gfortran
FCFLAGS = -g -c -fbounds-check
FLFLAGS = -g -fbacktrace
SRC = birrp.f coherence.f dataft.f diagnostic.f fft.f filter.f math.f rarfilt.f response.f rtpss.f utils.f weight.f zlinpack.f
# "make" builds all
PROGRAM = birrp
all: $(PROGRAM)
$(PROGRAM): $(SRC)
$(FC) $(FCFLAGS) -o $@ $<
%.o: %.f
$(FC) $(FLFLAGS) -o $@ $^
clean:
rm -f *.o
现在可以编译了
gfortran -g -c -fbounds-check -o birrp birrp.f
为什么?
gfortran
将 birrp 解释为源文件,但您希望它作为 outfile
.
man gfortran
表示 outfile
由 -o
参数指定,因此您的目标变为:
$(PROGRAM): $(SRC)
$(FC) $(FCFLAGS) -o $@ $<
但这并不能解决你所有的问题。根据 GNU Make manual $<
指定 第一个依赖项 而不是全部。您总是希望拥有完整的依赖项列表,即 $^
.
所以你的目标变成了:
$(PROGRAM): $(SRC)
$(FC) $(FCFLAGS) -o $@ $^