netcdf 4.0 lib not linking
Yolande Serra
serra at atmo.arizona.edu
Wed Mar 18 10:33:04 PDT 2009
I just wanted to let the list know I fixed the problem with linking my
netcdf 4.0 library to a fortran program. Note, the macports netcdf
install works fine with C code calling netcdf routines, only fortran
code seemed to be an issue (even with the +g95 variant). The steps I
took were the following:
build szlib as standard installation from macports
build openmpi with the +gcc43 variant so that fortran is enabled
build hdf5-18 with the +gcc43 variant, again so that fortran is enabled
build netcdf using gcc43 with fortran enabled - I wrote my own
Portfile to do this as I wanted netcdf 4 capabilities. The macports
netcdf installation does not activate netcdf-4 (in which case you
might as well just install netcdf-3.x).
Then, when compiling code that references libnetcdf.a use
>> gfortran -fsecond-underscore -I/opt/local/include program.f -o
program -L/opt/local/lib -lnetcdf
The -fsecond-underscore is critical, at least for my setup. Otherwise
the code will not link to the netcdf library, which has second
underscores. I suppose you could also build the netcdf library with
FFLAG -fno-second-underscore. I did not try this. I'm curious why
the gcc43 compiler suite built the netcdf library with second
underscores but does not build my .f code with them.
my Portfile (used macports netcdf portfile as a template):
PortSystem 1.0
name netcdf
version 4.0
maintainers serra at atmo.arizona.edu
platforms darwin
categories science
description NetCDF - Network Common Data Form
long_description NetCDF is an interface \
for array-oriented data access and a library
that \
provides an implementation of the interface.
The \
netCDF library also defines a machine-
independent \
format for representing scientific data.
Together, \
the interface, library, and format support
the \
creation, access, and sharing of scientific
data. \
The netCDF software was developed at the
Unidata \
Program Center in Boulder, Colorado.
homepage http://unidata.ucar.edu/packages/netcdf/
master_sites ftp://ftp.unidata.ucar.edu/pub/netcdf/ \
http://www.gfd-dennou.org/arch/netcdf/unidata-mirror/ \
ftp://www.gfd-dennou.org/arch/netcdf/unidata-mirror/
checksums sha1 bea99846265e55e54be2c200ae004acc3a221c0a
depends_lib port:hdf5 \
port:szip
configure.cppflags "-DNDEBUG -Df2cFortran"
configure.cxxflags "-O2 -fno-common"
configure.cflags "-O2 -fno-common"
configure.args --disable-f77 \
# --enable-shared \
--enable-netcdf-4 \
--with-zlib=${prefix}/lib \
--with-szlib=${prefix}/lib \
--with-hdf5=${prefix}/lib
test.run yes
test.target check
destroot.destdir prefix=${destroot}${prefix} \
MANDIR=\\\${prefix}/share/man
post-destroot {
file delete -force ${destroot}${prefix}/share/man/whatis.db
}
variant g95 {
depends_lib port:g95
configure.args-delete --disable-f77
configure.fc ${prefix}/bin/g95
configure.env-append FCFLAGS=-O2
}
variant gfortran43 {
depends_lib port:gcc43
configure.args-delete --disable-f77
configure.cc ${prefix}/bin/gcc-mp-4.3
configure.cxx ${prefix}/bin/g++-mp-4.3
configure.fc ${prefix}/bin/gfortran-mp-4.3
}
On Mar 16, 2009, at 12:15 PM, Yolande Serra wrote:
> I've written previously about this issue and got no reply. I'm
> trying again after trying everything I could think of to get my
> netcdf 4.0 library installed with macport to work with the gcc43
> also installed with macport. I made a local port for netcdf in
> which I compiled it with gcc43 after having installed gcc43 from
> macport. The build worked and I configured it with gfortran so that
> the fortran libs were also installed with my netcdf libs. I
> selected to not have separate fortran libraries and did not
> configure with shared libraries so everything is in libnetcdf.a. I
> checked using otool and all the right references are in libnetcdf.a,
> at least if I compare it to a working version of netcdf 4.0 on my
> old powerpc mac. No netcdf 4.0 options were turned on so I did not
> have to install netcdf with hdf5, zlib or szlib (as this is what I
> tried at first and did not get it to work).
>
> So, the question is why do I get linking errors when I try to
> compile fortran code that calls the netcdf libs? I compile the code
> with gfortran-mp-4.3 and use the same options as when I built netcdf
> 4.0 (-fno-second-underscore -O2 -g). I also have provided the
> location of the include file and library explicitly in the compile
> command line (-I/opt/local/include and -L/opt/local/lib -lnetcdf).
> I also call some udunits functions which do not give any errors and
> udunits was also installed using macports and is in /opt/local.
>
> Do I need to recompile the gcc43 using the same options (-fno-second-
> underscore)?? I tried compiling netcdf libs without this option,
> but this also did not work. I tried compiling my code without that
> option as well and it did not work. I also tried -fno-underscoring
> - no luck. I have a netcdf 4.0 library installed on my powerpc mac
> and can use gcc4.3 with that library with no problem but neither of
> these packages were installed with macports. I'd like to use
> macports for the new mac (intel), as it seems more convenient than
> building source code myself all the time. However, I desperately
> need a working netcdf library as all my data is stored this way.
>
> Thanks for any help, Yolande
>
>
> _______________________________________________
> macports-users mailing list
> macports-users at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo.cgi/macports-users
More information about the macports-users
mailing list