Hi,
I'm trying to set up ROMS on a single SunBlade 100 which is still running Solaris 8 on SPARC, and am running into problems trying to install netcdf. I think I have narrowed it down to the fortran-compiler we are using, which is the SunSoft Version 1.0.1.0. F90 compiler which I think originally came with the machine.
My question is basically whether there is a minimum SunOS or compiler requirement to run ROMS. I noticed in the Compilers folder that with SunOS an F95 compiler seems assumed, is this the best combination? Also if there is an OS requirement of higher than Sol8 there is no point in me continuing to attempt solving my netcdf issues, so I would like to find out now rather than later. If anyone has had similar issues with netcdf, how did you solve them?
Thank you very much for any help.
Bee
ROMS on SunBlade 100 running Solaris 8
Hi, I'm trying to set up netcdf 3.6.2. The error I get is the following
if /usr/local/bin/gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../fortran -g -O2 -MT fortlib.o -MD -MP -MF "$depbase.Tpo" -c -o fortlib.o fortlib.c; \
then mv -f "$depbase.Tpo" "$depbase.Po"; else rm -f "$depbase.Tpo"; exit 1; fi
/bin/bash ../libtool --tag=F77 --mode=link f90 -I../libsrc -M../f90 -g -o nf_test test_get.o test_put.o nf_error.o nf_test.o test_read.o test_write.o util.o fortlib.o ../libsrc/libnetcdf.la
libtool: link: f90 -I../libsrc -M../f90 -g -o nf_test test_get.o test_put.o nf_error.o nf_test.o test_read.o test_write.o util.o fortlib.o ../libsrc/.libs/libnetcdf.a
ild: (undefined symbol) __moddi3 -- referenced in the text segment of ../libsrc/.libs/libnetcdf.a(posixio.o)
ild: (undefined symbol) __divdi3 -- referenced in the text segment of ../libsrc/.libs/libnetcdf.a(nc.o)
ild: (undefined symbol) __muldi3 -- referenced in the text segment of ../libsrc/.libs/libnetcdf.a(nc.o)
ild: (undefined symbol) __muldi3 -- referenced in the text segment of ../libsrc/.libs/libnetcdf.a(putget.o)
*** Error code 5
make: Fatal error: Command failed for target `nf_test'
Current working directory /usr/local/netcdf/netcdf-3.6.2/nf_test
*** Error code 1
make: Fatal error: Command failed for target `check-am'
Current working directory /usr/local/netcdf/netcdf-3.6.2/nf_test
*** Error code 1
make: Fatal error: Command failed for target `check-recursive'
At the moment, I'm trying to go through the config.log file to see if there is anything which is wrong in there, a first look at it on the screen hasn't brought me any revelation, so I'm going through it line by line now. I'm not really an expert in UNIX or the setting up of libraries and compilers, so I'm feeling slightly out of my depth. I've tried googling my errors but no obvious solutions come up. Any more pointers would be great, as I just don't seem to be getting anywhere.
Thank you very much.
Bee
if /usr/local/bin/gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../fortran -g -O2 -MT fortlib.o -MD -MP -MF "$depbase.Tpo" -c -o fortlib.o fortlib.c; \
then mv -f "$depbase.Tpo" "$depbase.Po"; else rm -f "$depbase.Tpo"; exit 1; fi
/bin/bash ../libtool --tag=F77 --mode=link f90 -I../libsrc -M../f90 -g -o nf_test test_get.o test_put.o nf_error.o nf_test.o test_read.o test_write.o util.o fortlib.o ../libsrc/libnetcdf.la
libtool: link: f90 -I../libsrc -M../f90 -g -o nf_test test_get.o test_put.o nf_error.o nf_test.o test_read.o test_write.o util.o fortlib.o ../libsrc/.libs/libnetcdf.a
ild: (undefined symbol) __moddi3 -- referenced in the text segment of ../libsrc/.libs/libnetcdf.a(posixio.o)
ild: (undefined symbol) __divdi3 -- referenced in the text segment of ../libsrc/.libs/libnetcdf.a(nc.o)
ild: (undefined symbol) __muldi3 -- referenced in the text segment of ../libsrc/.libs/libnetcdf.a(nc.o)
ild: (undefined symbol) __muldi3 -- referenced in the text segment of ../libsrc/.libs/libnetcdf.a(putget.o)
*** Error code 5
make: Fatal error: Command failed for target `nf_test'
Current working directory /usr/local/netcdf/netcdf-3.6.2/nf_test
*** Error code 1
make: Fatal error: Command failed for target `check-am'
Current working directory /usr/local/netcdf/netcdf-3.6.2/nf_test
*** Error code 1
make: Fatal error: Command failed for target `check-recursive'
At the moment, I'm trying to go through the config.log file to see if there is anything which is wrong in there, a first look at it on the screen hasn't brought me any revelation, so I'm going through it line by line now. I'm not really an expert in UNIX or the setting up of libraries and compilers, so I'm feeling slightly out of my depth. I've tried googling my errors but no obvious solutions come up. Any more pointers would be great, as I just don't seem to be getting anywhere.
Thank you very much.
Bee
Posixio, nc, and putget are C language routines which would have been compiled with a C compiler into nc.o and friends. You are linking them with a Fortran compiler (f90). Unfortunately, the C compiler is counting on you linking with a compler-specific library containing these routines and the Fortran compiler has no way to know it needs to link to it.bberx wrote:ild: (undefined symbol) __moddi3 -- referenced in the text segment of ../libsrc/.libs/libnetcdf.a(posixio.o)
ild: (undefined symbol) __divdi3 -- referenced in the text segment of ../libsrc/.libs/libnetcdf.a(nc.o)
ild: (undefined symbol) __muldi3 -- referenced in the text segment of ../libsrc/.libs/libnetcdf.a(nc.o)
ild: (undefined symbol) __muldi3 -- referenced in the text segment of ../libsrc/.libs/libnetcdf.a(putget.o)
On our linux system I can go to /usr/lib/gcc/x86_64-redhat-linux/4.1.2 and perform:
Code: Select all
cygnus.arsc.edu 290% foreach foo (lib*)
foreach? nm $foo | grep mul
foreach? echo $foo done
foreach? end
Code: Select all
0000000000000000 T __multi3
0000000000000030 T __mulvdi3
0000000000000000 T __mulvsi3
_mulvdi3.o:
0000000000000000 T __mulvti3
0000000000000000 T __mulsc3
_muldc3.o:
libgcc.a done
U __muldc3
U __mulxc3
libgfortran.a done
Code: Select all
f90 -I../libsrc -M../f90 -g -o nf_test test_get.o test_put.o nf_error.o nf_test.o test_read.o test_write.o util.o fortlib.o ../libsrc/.libs/libnetcdf.a
Edit: easier might be to use the Sun C compiler instead.