Steve, > When I set "--disable-fortran-type-check" as a compiler flag (found at > http://www.unidata.ucar.edu/support/help/MailArchives/netcdf/msg07203.html) > and also set my LDFLAGS, I was finally able to get rid of the undefined > references and "cannot execute" errors. Thanks very much for your help. Aha, thanks for pointing out that archived support response from 2008! I've added advice about using the "disable-fortran-type-check" when cross-compiling to our instructions for building netCDF-Fortran, at http://www.unidata.ucar.edu/netcdf/docs/netcdf-fortran-install.html --Russ > address@hidden> wrote: > > > Hi Steve, > > > > > I have attached my config.log file, from running configure in netCDF > > > Fortran 4.2. Perhaps you can detect something. > > > > > > I am still seeing errors like: > > > > > > libtool: link: /home/skirby/ANDROID19/bin/arm-linux-androideabi-gfortran > > > -I. ./fortran -I../f90 -g -O2 -o .libs/nf_test test_get.o test_put.o > > > nf_error.o nf_test.o test_read.o test_write.o util.o fortlib.o > > > -L/home/skirby/NETCDF42-ANDROID/lib ../fortran/.libs/libnetcdff.so > > > /home/skirby/NETCDF42-ANDROID/lib/libnetcdf.so -lm -Wl,-rpath > > > -Wl,/home/skirby/NETCDF42-ANDROID/lib > > > test_get.o: In function `test_nf_get_var1_int1_': > > > > > /home/skirby/ANDROID-NETCDF-FORTRAN-COMPILE/netcdf-fortran-4.2/nf_test/test_get.F:125: > > > undefined reference to `nf_get_var1_int1_' > > > > > /home/skirby/ANDROID-NETCDF-FORTRAN-COMPILE/netcdf-fortran-4.2/nf_test/test_get.F:129: > > > undefined reference to `nf_get_var1_int1_' > > > > > /home/skirby/ANDROID-NETCDF-FORTRAN-COMPILE/netcdf-fortran-4.2/nf_test/test_get.F:134: > > > undefined reference to `nf_get_var1_int1_' > > > > > /home/skirby/ANDROID-NETCDF-FORTRAN-COMPILE/netcdf-fortran-4.2/nf_test/test_get.F:152: > > > undefined reference to `nf_get_var1_int1_' > > > test_get.o: In function `test_nf_get_var1_int2_': > > > > I don't think using netCDF-C version 4.3.1.1 rather than 4.2 is going > > to fix the problem you are seeing with undefined references. > > > > It looks like you are cross-compiling and the gfortran you have > > built for that purpose isn't working correctly as a loader in tests > > run by the configure script. As an example of this, the netCDF-Fortran > > configure script tries to determine C types corresponding to various > > Fortran types by compiling, linking, and running some programs at > > configure time, resulting in these constants defined in a "confdefs.h" > > file: > > > > #define NF_INT1_IS_C_SIGNED_CHAR 1 > > #define NF_INT2_IS_C_SHORT 1 > > #define NF_INT_IS_C_INT 1 > > #define NF_REAL_IS_C_FLOAT 1 > > #define NF_DOUBLEPRECISION_IS_C_DOUBLE 1 > > > > When you run configure, all those constants are left undefined in > > confdefs.h. The reason they are not defined is due to failures such > > as this, from the config.log you sent (absolute paths elided or > > simplified for clarity): > > > > configure: checking if Fortran "byte" is C "signed char" > > configure: gcc -c -I${NCDIR}/include -g -O2 conftest.c > > conftest.c: In function 'sub_': > > conftest.c:4:3: warning: incompatible implicit declaration of built-in > > function 'exit' [enabled by default] > > exit(values[1] != -2 || values[2] != -3); > > ^ > > configure: $? = 0 > > configure: gfortran -g -O2 -c conftestf.f > > configure: $? = 0 > > configure: gfortran -o conftest -g -O2 -L${NCDIR}/lib conftestf.o > > conftest.o -lnetcdf > > configure: $? = 0 > > configure: ./conftest > > ./configure: line 17846: ./conftest: cannot execute binary file > > configure: $? = 126 > > configure: result: no > > > > When I run configure for netCDF Fortran 4.2 using an installed netCDF C > > 4.3.1.1, the config.log output from this test is: > > > > configure: checking if Fortran "byte" is C "signed char" > > configure: gcc -c -I${NCDIR}/include -g -O2 conftest.c > > conftest.c: In function 'sub_': > > conftest.c:4:3: warning: incompatible implicit declaration of built-in > > function 'exit' > > configure: $? = 0 > > configure: gfortran -g -O2 -c conftestf.f > > configure: $? = 0 > > configure: gfortran -o conftest -g -O2 -L${NCDIR}/lib conftestf.o > > conftest.o -lnetcdf > > configure: $? = 0 > > configure: ./conftest > > configure: $? = 0 > > configure: result: yes > > > > The compiler warning is irrelevant, the important failure is "cannot > > execute binary file", from which an error status 126 is returned on > > your system. Maybe your gfortran used as a cross-compiler is not > > linking correctly on the 32-bit arm-linux platform that's your target, > > or maybe our configure script is not working correctly for > > cross-compiling, which we don't test. This may be difficult to fix ... > > > > --Russ > > > > > > > > etc. > > > > > > I have not built the netCDF C 4.3.1.1 code yet. These results are still > > > based on netCDF C 4.2. > > > > > > I set these environment variables: > > > CPPFLAGS=-I/home/skirby/NETCDF42-ANDROID/include > > > LDFLAGS=-L/home/skirby/NETCDF42-ANDROID/lib > > > LIBS=-lnetcdf > > > LD_LIBRARY_PATH=/home/skirby/NETCDF42-ANDROID/lib > > > > > > > > > --Steve > > > > > > > > > > > > > > > > > > > > > address@hidden> wrote: > > > > > > > Hi Steve, > > > > > > > > Rather than using compiler flags related to underscores, I recommend > > > > following the steps here, which work with many compiler combinations > > > > without messing with underscores in function names: > > > > > > > > http://www.unidata.ucar.edu/netcdf/docs/netcdf-fortran-install.html > > > > > > > > The instructions above explain when LD_LIBRARY_PATH may be required in > > > > addition to LD_FLAGS and CPPFLAGS settings. If this doesn't work for > > > > you, we might be able to provide more help if you send the config.log > > > > file generated by the configure script when you start building the > > > > netCDF Fortran API from source. > > > > > > > > Also, it would be better to use the most recent netCDF C release, > > version > > > > 4.3.1.1, with netCDF Fortran 4.2. It has various bug fixes and > > > > other improvements since netCDF C 4.2 was released, and it's compatible > > > > with netCDF-Fortran version 4.2. > > > > > > > > --Russ > > > > > > > > > I have successfully cross-compiled netcdf C 4.2, i.e., build it on a > > > > x86_64 > > > > > linux box to run on a android ARM. > > > > > > > > > > Now I'm trying to cross-compile netcdf fortran 4.2. But I'm getting > > > > > undefined references like the one I show below, when I run "gmake > > check". > > > > > > > > > > > > > > > libtool: link: /home/me/ANDROID19/bin/arm-linux-androideabi-gfortran > > -l > > > > > ./fortran -I../f90 -g -O2 -o .libs/nf_test test_get.o test_put.o > > > > > nf_error.o nf_test.o test_read.o test_write.o util.o fortlib.o > > > > > ../fortran/.libs/libnetcdff.so -Wl,-rpath > > > > -Wl,/home/me/NETCDF42-ANDROID/lib > > > > > test_get.o: In function `test_nf_get_var1_int1_': > > > > > > > > > > > /home/me/ANDROID-NETCDF-FORTRAN-COMPILE/netcdf-fortran-4.2/nf_test/test_get.F:125: > > > > > undefined reference to `nf_get_var1_int1_' > > > > > > > > > > and lots more very similar to this. > > > > > > > > > > Prior to this I compiled the netCDF C code, version 4.2. Then I > > point > > > > > CPPFLAGS=-I/path/to/netCDF-C-compile/include and > > > > > LD_LIBRARY_PATH=/path/to/netCDF-C-compile/lib. > > > > > > > > > > If anybody could point me toward how to fix this or give me some > > ideas > > > > that > > > > > would be great. If it helps at all, I have attached the config log > > file. > > > > > > > > > > TIA, > > > > > SK > > > > > > > > > > > > > > > > > > Russ Rew UCAR Unidata Program > > > > address@hidden http://www.unidata.ucar.edu > > > > > > > > > > > > > > > > Ticket Details > > > > =================== > > > > Ticket ID: UAT-411621 > > > > Department: Support netCDF > > > > Priority: Normal > > > > Status: Closed > > > > > > > > > > > > > > > > > > Russ Rew UCAR Unidata Program > > address@hidden http://www.unidata.ucar.edu > > > > > > > > Ticket Details > > =================== > > Ticket ID: UAT-411621 > > Department: Support netCDF > > Priority: Normal > > Status: Closed > > > > > > Russ Rew UCAR Unidata Program address@hidden http://www.unidata.ucar.edu Ticket Details =================== Ticket ID: UAT-411621 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.