Compilation 使用所有可用库编译Fortran netCDF程序
首先,我读过这个主题,但我不能编译我的代码。 我在UBUNTU 14.04上编译一个使用NetCDF的fortran程序。我有如下编译错误:Compilation 使用所有可用库编译Fortran netCDF程序,compilation,fortran,netcdf,Compilation,Fortran,Netcdf,首先,我读过这个主题,但我不能编译我的代码。 我在UBUNTU 14.04上编译一个使用NetCDF的fortran程序。我有如下编译错误: terrain.f:(.text+0x17efd): undefined reference to 'ncopn_' terrain.f:(.text+0x18111): undefined reference to 'ncopn_' terrain.f:(.text+0x187cc): undefined reference to 'ncclos_'
terrain.f:(.text+0x17efd): undefined reference to 'ncopn_'
terrain.f:(.text+0x18111): undefined reference to 'ncopn_'
terrain.f:(.text+0x187cc): undefined reference to 'ncclos_'
terrain.f:(.text+0x187ea): undefined reference to 'ncclos_'
它肯定说我没有netcdf fortran库。但是我安装了zlib、HDF5、netcdf C和netcdf Fortran,根据这些带有disable shared和disable dap选项的网页
这是nc config-libs命令的结果:
-L/usr/local/lib -L/usr/local -lnetcdf -lhdf5_hl -lhdf5 -ldl -lm -lz
-L/usr/local/lib -lnetcdff -L/usr/local/lib -lnetcdf -lnetcdf -lhdf5_hl -lhdf5 -lz
gfortran terrain.f -I/usr/local/include -L/usr/local/lib -lnetcdff -lnetcdf -lhdf5_hl -lhdf5 -lz -lm -ldl
这是nf config-flibs命令的结果:
-L/usr/local/lib -L/usr/local -lnetcdf -lhdf5_hl -lhdf5 -ldl -lm -lz
-L/usr/local/lib -lnetcdff -L/usr/local/lib -lnetcdf -lnetcdf -lhdf5_hl -lhdf5 -lz
gfortran terrain.f -I/usr/local/include -L/usr/local/lib -lnetcdff -lnetcdf -lhdf5_hl -lhdf5 -lz -lm -ldl
我使用以下命令生成项目:
-L/usr/local/lib -L/usr/local -lnetcdf -lhdf5_hl -lhdf5 -ldl -lm -lz
-L/usr/local/lib -lnetcdff -L/usr/local/lib -lnetcdf -lnetcdf -lhdf5_hl -lhdf5 -lz
gfortran terrain.f -I/usr/local/include -L/usr/local/lib -lnetcdff -lnetcdf -lhdf5_hl -lhdf5 -lz -lm -ldl
这个怎么了
编辑:我在配置netcdf C和netcdf fortran时使用-disable-netcdf-4选项,我可以编译代码。所以这是HDF5的一个问题 这不是一个真正的答案,但你需要提供更多的信息。编写一个简单的程序,并向我们展示代码。然后向我们展示您用于尝试和编译的命令 以下是两个例子: Fortran 77:
$ cat test_nc.f
PROGRAM TEST_NC
IMPLICIT NONE
include 'netcdf.inc'
INTEGER ncid, nc_err
nc_err = nf_open('test.nc', nf_nowrite, ncid)
nc_err = nf_close(ncid)
END PROGRAM TEST_NC
$ gfortran test_nc.f -o test_nc `nf-config --fflags --flibs`
Fortran 90:
$ cat test_nc.f90
program test_nc
use netcdf
implicit none
integer :: ncid, nc_err
nc_err = nf90_open('test.nc', nf90_nowrite, ncid)
nc_err = nf90_close(ncid)
end program test_nc
$ gfortran test_nc.f90 -o test_nc `nf-config --fflags --flibs`
这两个问题都在我的系统上编译,没有错误甚至警告。这不是一个真正的答案,但你需要提供更多信息。编写一个简单的程序,并向我们展示代码。然后向我们展示您用于尝试和编译的命令 以下是两个例子: Fortran 77:
$ cat test_nc.f
PROGRAM TEST_NC
IMPLICIT NONE
include 'netcdf.inc'
INTEGER ncid, nc_err
nc_err = nf_open('test.nc', nf_nowrite, ncid)
nc_err = nf_close(ncid)
END PROGRAM TEST_NC
$ gfortran test_nc.f -o test_nc `nf-config --fflags --flibs`
Fortran 90:
$ cat test_nc.f90
program test_nc
use netcdf
implicit none
integer :: ncid, nc_err
nc_err = nf90_open('test.nc', nf90_nowrite, ncid)
nc_err = nf90_close(ncid)
end program test_nc
$ gfortran test_nc.f90 -o test_nc `nf-config --fflags --flibs`
这两种代码在我的系统上编译时都没有错误甚至警告。您能给我们看一下您的Fortran代码吗?或者更简单的例子?我的代码太长了。但我可以在其他一些系统上运行它,并且它有适当的包含。我现在在我的系统中运行它,没有安装hdf5和-disable-netcdf-4选项。有一件事可能是重复的,让我惊讶的是,引用是ncopn,而不是nf90\u open\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu?或者更简单的例子?我的代码太长了。但我可以在其他一些系统上运行它,并且它有适当的包含。我现在在我的系统中运行它,没有安装hdf5和-disable-netcdf-4选项。有一件事可能会重复,让我惊讶的是,引用是ncopn,而不是nf90\u open\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。