[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[netCDF #PKX-997551]: Build NetCDF using Intel ifort in Linux
- Subject: [netCDF #PKX-997551]: Build NetCDF using Intel ifort in Linux
- Date: Sat, 16 Jun 2012 16:36:57 -0600
Hi,
> I am trying to build NETCDF 4.1.3, then linking to it from a Fortran
> application which is built using ifort as follows:
>
> ifort -o gswp2data_my gswp2data_my.F90 -I/usr/local/netcdf/include
> -L/usr/local/netcdf/lib -lnetcdf
>
> Fortunately, the data in the nc file can be obtained correctly.
>
> Then I transplant the code into another fortran program. This program
> is compiled using ifort according to a Makefile file.
>
> The Makefile is:
>
> ifeq ($(LIS_ARCH),linux_ifc)
> CPP := /lib/cpp
> ifeq ($(LIS_SPMD),single)
> FC := ifort
> CC := gcc
>
> NETCDFLIB = /usr/local/netcdf/lib
> NETCDFINC = /usr/local/netcdf/include
>
> CFLAGS := $(cpp_path) -c -g -static -DIFC -DLINUX
> FFLAGS = $(cpp_path) -c -assume nounderscore -g -traceback -fpe0
> -nomixed_str_len_arg -names lowercase -convert big_endian -assume byterecl
> -DIFC -I$(NETCDFINC)
> LDFLAGS = -lm -L(NETCDFLIB) -lnetcdf
The statement above looks wrong. Maybe it should instead be:
LDFLAGS = -lm -L$(NETCDFLIB) -lnetcdf
> else
> FC := $(MPI_PREFIX)/bin/mpif90
> CPP := /lib/cpp
> CFLAGS := $(cpp_path) -c -O2
> FFLAGS = $(cpp_path) -c -I$(MOD_ESMF)/$(ESMF_ARCH) -DHIDE_SHR_MSG
> -DNO_SHR_VMATH -O
> LDFLAGS = -L$(LIB_ESMF)/$(ESMF_ARCH) -lesmf -lmpich
> endif
>
> When I compile the program, the following errors are:
>
>
> -lm -L/usr/local/netcdf/lib -lnetcdf
> readnc.o: In function `readnc':
> readnc.o: In function `readnc':
> /home/chensh/liskf2/src/make/../baseforcing/nc/readnc.F90:149: undefined
> reference to `netcdf_mp_nf90_open'
> /home/chensh/liskf2/src/make/../baseforcing/nc/readnc.F90:152: undefined
> reference to `netcdf_mp_nf90_inq_varid'
> /home/chensh/liskf2/src/make/../baseforcing/nc/readnc.F90:155: undefined
> reference to `netcdf_mp_nf90_inq_varid'
> /home/chensh/liskf2/src/make/../baseforcing/nc/readnc.F90:158: undefined
> reference to `netcdf_mp_nf90_inq_varid'
> /home/chensh/liskf2/src/make/../baseforcing/nc/readnc.F90:161: undefined
> reference to `netcdf_mp_nf90_inq_varid'
> /home/chensh/liskf2/src/make/../baseforcing/nc/readnc.F90:165: undefined
> reference to `netcdf_mp_nf90_inq_varid'
> readnc.o:/home/chensh/liskf2/src/make/../baseforcing/nc/readnc.F90:168: more
> undefined references to `netcdf_mp_nf90_inq_varid' follow
> readnc.o: In function `readnc':
> /home/chensh/liskf2/src/make/../baseforcing/nc/readnc.F90:175: undefined
> reference to `netcdf_mp_nf90_inq_dimid'
> /home/chensh/liskf2/src/make/../baseforcing/nc/readnc.F90:178: undefined
> reference to `netcdf_mp_nf90_inquire_dimension'
> /home/chensh/liskf2/src/make/../baseforcing/nc/readnc.F90:182: undefined
> reference to `netcdf_mp_nf90_close'
> /home/chensh/liskf2/src/make/../baseforcing/nc/readnc.F90:186: undefined
> reference to `netcdf_mp_nf90_inq_dimid'
> /home/chensh/liskf2/src/make/../baseforcing/nc/readnc.F90:188: undefined
> reference to `netcdf_mp_nf90_inquire_dimension'
> /home/chensh/liskf2/src/make/../baseforcing/nc/readnc.F90:192: undefined
> reference to `netcdf_mp_nf90_close'
> /home/chensh/liskf2/src/make/../baseforcing/nc/readnc.F90:196: undefined
> reference to `netcdf_mp_nf90_inq_varid'
> /home/chensh/liskf2/src/make/../baseforcing/nc/readnc.F90:199: undefined
> reference to `netcdf_mp_nf90_inq_varid'
> /home/chensh/liskf2/src/make/../baseforcing/nc/readnc.F90:202: undefined
> reference to `netcdf_mp_nf90_inq_varid'
> /home/chensh/liskf2/src/make/../baseforcing/nc/readnc.F90:206: undefined
> reference to `netcdf_mp_nf90_inq_varid'
> /home/chensh/liskf2/src/make/../baseforcing/nc/readnc.F90:210: undefined
> reference to `netcdf_mp_nf90_inq_varid'
> readnc.o:/home/chensh/liskf2/src/make/../baseforcing/nc/readnc.F90:214: more
> undefined references to `netcdf_mp_nf90_inq_varid' follow
> readnc.o: In function `readnc':
> /home/chensh/liskf2/src/make/../baseforcing/nc/readnc.F90:229: undefined
> reference to `netcdf_mp_nf90_get_var_2d_fourbytereal'
> /home/chensh/liskf2/src/make/../baseforcing/nc/readnc.F90:233: undefined
> reference to `netcdf_mp_nf90_get_var_2d_fourbytereal'
> /home/chensh/liskf2/src/make/../baseforcing/nc/readnc.F90:237: undefined
> reference to `netcdf_mp_nf90_get_var_2d_fourbytereal'
> /home/chensh/liskf2/src/make/../baseforcing/nc/readnc.F90:242: undefined
> reference to `netcdf_mp_nf90_get_var_2d_fourbytereal'
> /home/chensh/liskf2/src/make/../baseforcing/nc/readnc.F90:247: undefined
> reference to `netcdf_mp_nf90_get_var_2d_fourbytereal'
> readnc.o:/home/chensh/liskf2/src/make/../baseforcing/nc/readnc.F90:252: more
> undefined references to `netcdf_mp_nf90_get_var_2d_fourbytereal' follow
> readnc.o: In function `ncfile_close':
> /home/chensh/liskf2/src/make/../baseforcing/nc/readnc.F90:575: undefined
> reference to `netcdf_mp_nf90_close'
> readnc.o: In function `check':
> /home/chensh/liskf2/src/make/../baseforcing/nc/readnc.F90:589: undefined
> reference to `netcdf_mp_nf90_strerror'
> gmake: *** [LIS] Error 1
> cp: cannot stat `LIS': No such file or directory
>
> How I can revise the makefile, then I can compile the program successfully.
I don't know, but make sure the Fortran units that call netCDF functions each
have a
use netcdf
statement in the declarations. Also, you must be using the same Fortran
compiler as
was used in building the netCDF library, because the Fortran-90 module files are
different for different Fortran compilers.
--Russ
Russ Rew UCAR Unidata Program
address@hidden http://www.unidata.ucar.edu
Ticket Details
===================
Ticket ID: PKX-997551
Department: Support netCDF
Priority: Normal
Status: Closed