Linux システムで、いくつかの共有ライブラリ (違いがある場合は netCDF ライブラリ) を使用する Fortran プログラムを実行しようとしています。実行する前にLD_LIBRARY_PATH
、ライブラリの場所を指すように設定しました。次に、実行可能ファイルを実行すると、すぐにエラーが発生します
../my_program: 共有ライブラリの読み込み中にエラーが発生しました: libnetcdff.so.5: 共有オブジェクト ファイルを開けません: そのようなファイルまたはディレクトリはありません
ここで、 の値を再確認し、LD_LIBRARY_PATH
そこに cd して、プレーンとして日を見つけます。
$ ls *ff*
$ libnetcdff.a libnetcdff.la libnetcdff.so libnetcdff.so.0 libnetcdff.so.0.0.0
したがって、libnetcdff は完全に存在します。
誰かが私に問題を指摘できますか?
私が思いついたことの 1 つは、実行可能ファイルが libnetcdff.so.5 を見つけようとしているように見えるのに、存在するライブラリが実際には libnetcdff.so.0 であることです。それが問題ですか?もしそうなら、「5」を主張しないように実行可能ファイルを納得させる方法はありますか? あるいは、libnetcdff.so.0 から libnetcdff.so.5 へのリンクは問題を解決しますか? (私はディレクトリ、BTWにアクセス許可を持っていません。そのため、まだ試していません。)
環境情報: CentOS マシン、gfortran でコンパイルされたコード。はい、私がコンパイルしたとき、私の-L
フラグは指しているのと同じディレクトリをLD_LIBRARY_PATH
指していました。
ありがとう。