[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[netCDF #STU-162362]: Netcdf with intel compilers



Vanesa,

> I need this version, with version 4.1.1 I have no problems, but I need to 
> install wrf and they recommend version 3.6.2 netcdf.
> I add de include, and works well until make, when I get this...
> 
> if c++ -DHAVE_CONFIG_H -I. -I. -I../.. -I../../fortran    -I../../cxx   
> -I../../libsrc -g -O2 -MT sfc_pres_temp_rd.o -MD -MP -MF "$depbase.Tpo" -c -o 
> sfc_pres_temp_rd.o sfc_pres_temp_rd.cpp; \
> then mv -f "$depbase.Tpo" "$depbase.Po"; else rm -f "$depbase.Tpo"; exit 1; fi
> sfc_pres_temp_rd.cpp: In function âint main()â:
> sfc_pres_temp_rd.cpp:123: error: âstrlenâ was not declared in this scope
> sfc_pres_temp_rd.cpp:123: error: âstrncmpâ was not declared in this scope
> sfc_pres_temp_rd.cpp:133: error: âstrlenâ was not declared in this scope
> sfc_pres_temp_rd.cpp:133: error: âstrncmpâ was not declared in this scope
> sfc_pres_temp_rd.cpp:141: error: âstrlenâ was not declared in this scope
> sfc_pres_temp_rd.cpp:141: error: âstrncmpâ was not declared in this scope
> sfc_pres_temp_rd.cpp:149: error: âstrlenâ was not declared in this scope
> sfc_pres_temp_rd.cpp:149: error: âstrncmpâ was not declared in this scope
> make[3]: *** [sfc_pres_temp_rd.o] Error 1
> make[3]: se sale del directorio `/home/cbarca/netcdf-3.6.2/examples/CXX'
> make[2]: *** [check-am] Error 2
> make[2]: se sale del directorio `/home/cbarca/netcdf-3.6.2/examples/CXX'
> make[1]: *** [check-recursive] Error 1
> make[1]: se sale del directorio `/home/cbarca/netcdf-3.6.2/examples'
> mamples

It looks like you could fix this by adding

  #include <cstring>

in the include statements at the begiining of the sfc_pres_temp_rd.cpp file.
You will probably need to add this also to the other example files in that 
directory to get a successful make, testing all the examples.  These problems
were fixed in later versions.

> Then I tried
> $ export CXX=''
> 
> And I get the same error.

After setting CXX='', you would have to run "make clean" and rerun the
configure script, before running "make check".  Doing things in that
order, you should not have gotten any C++ errors.  But it sounds like
you're close to getting the C++ API and examples to work anyway, so you
might as well finish with that approach.

By the way, even though WRF recommends using version 3.6.2, I expect it would
work fine linking against 4.1.1 also.  We know there are users using WRF with
4.1.1 successfully ...

--Russ

________________________________
> De: Unidata netCDF Support <address@hidden>
> Para: address@hidden
> CC: address@hidden
> Enviado: jueves, 1 de julio, 2010 18:26:05
> Asunto: [netCDF #STU-162362]: Netcdf with intel compilers
> 
> Hi Vanesa,
> 
> > HI: IÂm trying to install netcdf 3.6.2 using intel compilers.
> > I follow the instructions in Building
> > NetCDF* with the Intel Compilers
> >
> > 1)
> > address@hidden:/opt/intel/Compiler/11.1/072/bin/ia32$ source
> > /opt/intel/Compiler/11.1/072/bin/ia32/iccvars_ia32.sh
> > address@hidden:/opt/intel/Compiler/11.1/072/bin/ia32$ source
> > /opt/intel/Compiler/11.1/072/bin/ia32/ifortvars_ia32.sh
> >
> > 2)
> > $ cd <work directory>
> > $ tar -xvzf netcdf-3.6.2.tar.gz
> >
> > 3)
> > $ export CC=icc
> > $ export CXX=icpc
> > $ export CFLAGS='-O3 -xT -ip
> > -no-prec-div -static'
> > $ export CXXFLAGS='-O3 -xT -ip
> > -no-prec-div -static'
> >
> > $ export F77=ifort
> > $ export FC=ifort
> > $ export F90=ifort
> > $ export FFLAGS='-O3 -xT -ip
> > -no-prec-div -static'
> >
> > $ export CPP='icc -E'    $ export
> > CXXCPP='icpc -E'
> >
> > 4)sudo ./configure --prefix=/usr/local/netcdf
> >
> > 5) sudo make
> >
> > And I get this error:
> >
> > ncvalues.cpp: In member function 'virtual char* 
> > NcValues_ncbyte::as_string(long int) const':
> > ncvalues.cpp:238: error: 'strncpy' was not declared in this scope
> > ncvalues.cpp: In member function 'virtual char* 
> > NcValues_char::as_string(long int) const':
> > ncvalues.cpp:246: error: 'strncpy' was not declared in this scope
> > make[2]: *** [ncvalues.lo] Error 1
> > make[1]: *** [all-recursive] Error 1
> > make: *** [all] Error 2
> >
> > I'm missing something?
> 
> Version 3.6.2 of netCDF, from 2007, had a bug in the C++ interface,
> the file cxx/ncvalues.cpp was missing the statement
> 
> #include <cstring>
> 
> after
> 
> #include <string>
> 
> near the beginning of the file.  So one workaround would be to edit
> that file by inserting that statement, and then continue running the
> "make all check" to see if it completes successfully.
> 
> An alternative would be to just use a newer version of netCDF with
> this bug (and others) fixed.  I recommend just getting the latest
> netCDF source distribution (4.1.1) and building/installing from that.
> If you specify --disable-netcdf-4 as an option to configure, it will
> just build the netCDF-3 libraries and executables, so you won't have
> to install HDF5.  You can also specify --disable-dap if you don't
> need remote access via OPeNDAP to data on remote servers.  If you use
> version 4.1.1, you can continue to use the same flag settings you are
> using for 3.6.2.
> 
> Another alternative would be to just not build the C++ interface,
> which is not used by the other netCDF utilities such as ncdump and
> ncgen.  This is accomplished by running the configure script again
> after specifying
> 
> $ export CXX=''
> 
> along with the other settings you are using.
> 
> --Russ
> 
> Russ Rew                                         UCAR Unidata Program
> address@hidden                      http://www.unidata.ucar.edu
> 
> 
> 
> Ticket Details
> ===================
> Ticket ID: STU-162362
> Department: Support netCDF
> Priority: Normal
> Status: Closed
> 
> 
> 
> 

Russ Rew                                         UCAR Unidata Program
address@hidden                      http://www.unidata.ucar.edu



Ticket Details
===================
Ticket ID: STU-162362
Department: Support netCDF
Priority: Normal
Status: Closed


NOTE: All email exchanges with Unidata User Support are recorded in the Unidata inquiry tracking system and then made publicly available through the web. If you do not want to have your interactions made available in this way, you must let us know in each email you send to us.