- ベストアンサー
MPIを用いたFortranプログラムのコンパイル
バンド構造などをシミュレーションできるソフトPHASE ver. 4.00を下のサイトからダウンロードし、makeしようとしたのですが出来ません。 http://www.fsis.iis.u-tokyo.ac.jp/result/software/ エプソンダイレクト TP715LR CPU名称 Pentium III CPU動作周波数 700MHz メモリ 128MB OS Fedora Core 5 Linux Fortranコンパイラ intel Fortran Compiler 9.0 for Linux Cコンパイラ gcc MPI mpich-1.2.7 PHASEはMPIを使ったFortranのプログラムで、オブジェクトファイルは作られたのですが、最後のリンクのところで IPO link: can not find -lfmpich というエラーメッセージが出てしまいます。 リンクはifortで、オプションに-lfmpich -lmpichなどを指定しました。 -lのオプションは後に続くディレクトリ名をライブラリの検索先として指定するようなので、どこかにfmpichというディレクトリがあるかどうか調べたのですが存在しませんでした。本来ならばどこかにあるものなのでしょうか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ac_nonexistent.h は私のシステムにもなかったです。 mpichのインストール前にifortを動くように設定しないとmpif90などが作られないということがあるみたいなのでそのあたりと、 configureをもう一度注意深くやってみるのが良いと思います。 よいアドバイスができずすいません。
その他の回答 (2)
- sakusaker7
- ベストアンサー率62% (800/1280)
あんまり役に立たない情報ですが、ac_nonexistent.h は多分 configure でコンフィグレーションチェックをしている過程でチェックのために 自動生成しているファイル(の一つ)です。 ですからこのファイルの存在はあまり気にしないでよいかと。 ポイントは > error: unrecognized command line option "-f " > error: Command line access is required for MPICH こっちです。 このメッセージの前後にどのようなコマンドを実行しようとしたなどの 情報があるはずなのですが、それはどうなっていますか? また configure に与えるオプションで何か手がかりになるようなものはないのでしょうか? ./configure --help でオプション一覧が出せます。
お礼
おっしゃるとおりでした。 どうやらmpichをmakeするのにgccでなくintelのifortを使うよう、 mpichのconfigureの際にオプションで指定する必要があったようです。 どうもありがとうございました。
- water-cooled
- ベストアンサー率14% (76/538)
PHASEというソフトを使っていませんが、mpichはつかっております。 mpich-1.2.6/libの中に libfmpich.a というライブラリがあるのでそれとリンクすると言うことだと思います。 ライブラリの検索先の指定は-Lだと思います。 -lはライブラリを指すと思います。
お礼
回答ありがとうございました。 探してみたところ、/libにlibmpich.aはあったのですが、libfmpich.aはありませんでした。 他の所も検索してみましたがありません。 http://bbs.fedora.jp/read.php?FID=8&TID=3172 上の掲示板の症状と同様、bin/mpif90もなく、./configureの出力を見ると Error configuring the Fortran subsystem! とありました。 src/fortran/config.logを見ると configure: exit 1 とあり、そのログファイル中にエラーが7箇所程ありました。主なものに error: ac_nonexistent.h: No such file or directory error: unrecognized command line option "-f " error: Command line access is required for MPICH とありましたが、どうすればいいのか分かりません。 ac_nonexistent.hというものが本来はどこかにあるのでしょうか…
補足
回答ありがとうございます。 正確にlibfmpich.aだったか覚えていませんが、拡張子が.aのファイルはどこかにあったような気がします。 もし別の所にあったら/libに移してやればよいのですね。 -Lと-lが別物ということも分かりました。 報告は来週になってしまいますが、有効な情報をありがとうございます。
お礼
とんでもないです。 次のように設定したところ、lib/libfmpich.aもbin/mpif90も作られ、 IPO link: can not find -lfmpich というエラーがなくなりました。 # ./configure -cc=icc -c++=icc -fc=ifort -f90=ifort # make # make install 諦めかけていたところヒントを頂き、エラーを解決できました。 どうもありがとうございました。