使用gfortran和HDF-EOS2库编译程序

时间:2014-10-22 14:33:12

标签: fortran fortran90 gfortran hdf

我遇到将HDF-EOS库链接到Fortran90程序的问题。我已将库从源编译到$ prefix中指定的目录。我的简单编译命令是:

gfortran -I$prefix/include -L$prefix/lib -Wl,-rpath -Wl,$prefix/lib -lhdfeos -lGctp -lmfhdf -ldf -lz -lsz -ljpeg tst.f90

编译时,我收到以下错误:

undefined reference to `gdopen_'

在我不应该更改的程序中,HDF-EOS库通过外部关键字使用,例如

integer(kind=4), external :: gdopen

在库中, nm $ prefix / lib / libhdfeos.a | grep gdopen 给了我:

00000000000120c0 T gdopen

使用 -fno-underscoring 进行编译时,我得到一个不同的错误:

gfortran -fno-underscoring -I$prefix/include -L$prefix/lib -Wl,-rpath -Wl,$prefix/lib -lhdfeos -lGctp -lmfhdf -ldf -lz -lsz -ljpeg tst.f90

错误是:

undefined reference to `gdopen'

此外,gfortran找到了库,否则会抱怨。错误是否与下划线有关?我还能尝试什么?我在Fedora和gfortran版本4.7.2上工作。

1 个答案:

答案 0 :(得分:1)

是的,很可能是由下划线引起的。

尝试使用-fno-underscoringhttps://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html)进行编译,但通过适当的bind(C)界面进行修复会更好。

This tutorial(你在去这里之前读过它吗?很容易找到,即使是像我这样的库中的新手。)也说明你应该使用-fno-underscoring

继续实施教程推荐的其余内容,包括使用FC=$(HDF4_DIR)/bin/h4fc进行编译。