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