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 ライブラリは外部キーワードを介して使用されます。

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 に答える