- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MPIを用いたFortranプログラムのコンパイル エラー)
MPIを用いたFortranプログラムのコンパイル エラー
このQ&Aのポイント
- PHASE ver. 4.00をダウンロードしてmakeしようとした際にエラーが発生しました
- エラーメッセージにはglibcと関連しているようですが、対処法が分かりません
- OSはFedora Core 5 Linux、Fortranコンパイラはintel Fortran Compiler 9.0 for Linux、Cコンパイラはgcc、MPIはmpich-1.2.7を使用しています
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
/opt/intel/fc/9.0/lib/libifcore.a(for_open_proc.o): In function `for__compute_filename.':./src/libfor/for_open_proc.c:(.text+0xc14): warning: Using 'getpwnam' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking リンクのオプションで static の指定があるのではないでしょうか。最近の Linux では static にリンクしようとすると上記のメッセージがでますが、無視しても大丈夫です。 問題は、ndefined reference の方ですが、情報が少ないので憶測ですが、gcc を C のコンパイルに使っているのが問題なようなきがします。Intel の C コンパイラを PHASE のビルドに使うとどうなるでしょう?
お礼
Linux用のBorland C++ Compilerが存在しないようなので残念です。 Googleで"libc.a __gcc_personality_v0"と検索すると同様なエラーメッセージが沢山ありましたので、参考にしてみようと思います。 回答どうもありがとうございました。
補足
回答ありがとうございます。 遅くなりましたが、gccの代わりにiccを指定してPHASEをビルドしたところ、gccの場合と全く同じエラーが出ました。 iccを指定してもエラーの中にusr/lib/libc.aと`__gcc_personality_v0'という文字が入っている理由が分かりません。 makefileを見た限りlibc.aをリンクする指定はないのですが、libc.aというのはC言語関係の処理の際には自動的に参照されるものなのですか?その中でgccという特定のコンパイラの名前が入っているのも不思議です。 先に書いてませんでしたが、PHASEのソースはFortranのコンパイルの前にC言語プリプロセッサで前処理をするようになっており、そのC言語プリプロセッサとしてcppを指定しています。もしかしたらこれが関係しているかもしれないので、C言語プリプロセッサとしてcppの代わりにBorland C++ Compiler 5.5のcpp32を、Cコンパイラとしてgccの代わりにbcc32を使ってみようかなと思っています。 それにしても、PHASEだけが使うわけではないlibc.aが未定義のものを参照しているということは、LINUXのC言語開発環境なら当然あるべきものが不足しているということなのでしょうか…