• ベストアンサー
※ 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を使用しています

質問者が選んだベストアンサー

  • ベストアンサー
  • chirubou
  • ベストアンサー率37% (189/502)
回答No.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 のビルドに使うとどうなるでしょう?

ha2ru2
質問者

お礼

Linux用のBorland C++ Compilerが存在しないようなので残念です。 Googleで"libc.a __gcc_personality_v0"と検索すると同様なエラーメッセージが沢山ありましたので、参考にしてみようと思います。 回答どうもありがとうございました。

ha2ru2
質問者

補足

回答ありがとうございます。 遅くなりましたが、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言語開発環境なら当然あるべきものが不足しているということなのでしょうか…

関連するQ&A