MakefileforFortran给出了以下错误:make:不知道如何生成数据结构。o
我正在为Fortran准备我的第一个makefile: 到目前为止,我的代码分为三个对象模块 这是我的生成文件:MakefileforFortran给出了以下错误:make:不知道如何生成数据结构。o,makefile,fortran,gfortran,freebsd,Makefile,Fortran,Gfortran,Freebsd,我正在为Fortran准备我的第一个makefile: 到目前为止,我的代码分为三个对象模块 这是我的生成文件: # Variables OBJS=datastructures.o global.o main.o FC=/usr/local/bin/gfortran8 FFLAGS=-Wl,-rpath=/usr/local/lib/gcc8 # Makefile test1: $(OBJS) $(FC) -o mktpro_a $(FFLAGS) $(OBJS) %.
# Variables
OBJS=datastructures.o global.o main.o
FC=/usr/local/bin/gfortran8
FFLAGS=-Wl,-rpath=/usr/local/lib/gcc8
# Makefile
test1: $(OBJS)
$(FC) -o mktpro_a $(FFLAGS) $(OBJS)
%.o: %.f90
$(FC) -c $(FFLAGS) $<
clean:
rm $(OBJS)
rm test1
我使用的是FreeBSD12和gcc8 gfortran8,而不是
%.o: %.f90
$(FC) -c $(FFLAGS) $<
换成
.f90.o:
$(FC) -c $(FFLAGS) $<
您可能也需要显式输出我不熟悉此编译器:
.f90.o:
$(FC) -c $(FFLAGS) -o $@ $<
为了帮助其他人,这似乎是在FreeBSD 12 make中实现这一点的方法,它似乎是PMake
.SUFFIXES : .o .f90
.f90.o :
$(FC) $(FFLAGS) -c $(.IMPSRC)
此处的更多信息:感谢您提供的信息,我已经添加了这两个选项,但不幸的是,它不起作用。我仍然有同样的信息。我了解到FreeBSD使用PMake。我正在阅读并试图找出如何实现这一点。如果我将.f90重命名为.f,则它似乎已经实现了从.f构造.o的规则。后缀:.o.f90\n.f90.o:$FC$FFLAGS-c$.IMPSRC显然这是一个额外的行。请尝试使用gmake GNU make。
.SUFFIXES : .o .f90
.f90.o :
$(FC) $(FFLAGS) -c $(.IMPSRC)