0

我有将 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 库是通过 external 关键字使用的,例如

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 上工作。

4

1 回答 1

1

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

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

本教程(你在去这里之前读过它吗?即使是像我这样的图书馆新手也很容易找到。)还指出你应该使用-fno-underscoring.

继续执行本教程建议的其余部分,包括使用FC=$(HDF4_DIR)/bin/h4fc.

于 2014-10-22T14:52:27.913 回答