Linux ***没有规则使目标'module_netcdf_io.o';,'driver.exe';所需;。停止错误

Linux ***没有规则使目标'module_netcdf_io.o';,'driver.exe';所需;。停止错误,linux,makefile,netcdf,Linux,Makefile,Netcdf,我正试着在诺亚议员身上做文章 然而,我不断地得到这个错误。(***没有规则使目标module\u netcdf\u io.o'成为driver.exe.所需的。停止。) 这是生成文件: .SUFFIXES: .SUFFIXES: .o .F include user_build_options OBJS = module_sf_noahmplsm.o \ module_model_constants.o \ module_sf_myjsfc.o \ module_s

我正试着在诺亚议员身上做文章

然而,我不断地得到这个错误。(***没有规则使目标
module\u netcdf\u io.o'成为
driver.exe.所需的。停止。)

这是生成文件:

.SUFFIXES:
.SUFFIXES: .o .F

include user_build_options

OBJS =  module_sf_noahmplsm.o \
    module_model_constants.o \
    module_sf_myjsfc.o \
    module_sf_sfclay.o \
    module_sf_noahlsm.o \
    module_ascii_io.o \
    module_netcdf_io.o \
    module_io.o \
    kwm_date_utilities.o \
    module_sf_noahutl.o \
    driver.o

CMD = driver.exe

FFLAGS =    $(FREESOURCE) $(F90FLAGS)

all:    $(CMD)

driver.exe: $(OBJS)
    $(COMPILERF90) -o $(@) $(OBJS) $(NETCDFLIB)

.F.o:
    $(RM) $(*).f90
    $(CPP) $(CPPMACROS) $(NETCDFINC) $(*).F > $(*).f90
    $(COMPILERF90) -c $(FFLAGS) $(NETCDFINC) $(*).f90
    $(RM) $(*).f90

clean:
    $(RM) $(OBJS) $(CMD) *.mod *~

driver.exe:     driver.o
driver.exe:     module_sf_noahmplsm.o
driver.exe:     module_sf_noahutl.o
driver.exe:     module_io.o
module_io.o:        module_ascii_io.o
module_io.o:        module_netcdf_io.o
module_ascii_io.o:  kwm_date_utilities.o
module_sf_noahmplsm.o:  module_sf_myjsfc.o module_sf_sfclay.o module_sf_noahlsm.o
module_sf_myjsfc.o: module_model_constants.o
该文件夹包含以下文件:

graphics
bondville.dat
bondville.val
driver.F
GENPARM.TBL
kwm_date_utilities.F
Makefile
module_ascii_io.F
module_io.F
module_model_constants.F
module_netcdf_io.F
module_sf_myjsfc.F
module_sf_noahlsm.F
module_sf_noahmplsm.F
module_sf_noahutl.F
module_sf_sfclay.F
MPTABLE.TBL
README
SOILPARM.TBL
user_build_options
VEGPARM.TBL
将文件与netcdf目录链接所需的user_build-options如下所示:

#
#  Options for Linux with Intel Fortran
#

# COMPILERF90   =   ifort
# FREESOURCE    =   -free
# CPPMACROS =   -D_SIMPLE_DRIVER_
# F90FLAGS  =       -convert big_endian -g -O0 -check all,noshape,nopointer,noarg_temp_created -fp-model precise -fpe0 #-fp-model strict
# CPP       =   cpp -C -P -traditional 
# LIBS      =
# NETCDFDIR =   /home/tirtha/libs/netcdf/
# NETCDFINC =   /home/tirtha/libs/netcdf/include/
# NETCDFLIB =   /home/tirtha/libs/netcdf/lib/
# NCARG_ROOT    =   /home/tirtha/NCARG/ncl6.1/
# RM        =   rm -f
# CC        =   cc
在运行代码之前,我已经删除了哈希标记

(在评论中回答。请参阅)

OP写道:

我设法解决了这个问题。这是一个
netcdf
问题

主要问题是我用来编译
netcdf
的编译器与我用来编译
Noah
的编译器不一样。此外,即使当我链接到不同的
netcdf
目录(使用相同的编译器编译)时,我也没有使用
makeclean
。这样做解决了问题


除了您提到的文件外,是否编译了其他文件?
是否使module_netcdf_io.o
生成相同的错误?如何
使模块\模型\常数.o
?关于
make
。它们都显示两个错误中的一个,要么是无规则错误,要么是这样的:rm-f driver.f90 cpp-C-P-traditional-Dèu GFORTRANèuèu SIMPLEèu driverè/home/tirtha/libs/netcdf/include/driver.f>driver.f90 cc1:error:/home/tirtha/libs/netcdf/include/:没有这样的文件或目录生成:**[driver.o]错误1@EtanReisner它们都会生成相同的错误。还有另一种错误类型,当我设置“module\u ascii\u io.o”或“module\u sf\u sfclay.o”时会调用它。它是这样的:rm-f kwm_date_utilities.f90 cpp-C-P-traditional-D____-D_SIMPLE_DRIVER_/home/tirtha/libs/netcdf/include/kwm_date_utilities.f>kwm_date_utilities.f90 cc1:错误:/home/tirtha/libs/netcdf/include/:没有这样的文件或目录生成:**[kwm_date_utilities.o]错误1检查此命令是否有效“cpp-C-P-traditional-D_u-GFORTRAN_uu-D_u-SIMPLE_u-DRIVER_u-I/home/tirtha/libs/netcdf/include/DRIVER.F>DRIVER.f90”