1

私は mpif90 を使用して、サードパーティのソフトウェアをコンパイルしています。これは、私の場合は gcc の mpi バージョンです。パッケージにはメイクファイルが付属しています。オブジェクト ファイルをコンパイルした後、makefile は ar でアーカイブを作成しますが、入力オブジェクト ファイルがないため、これは失敗します。事実上、オブジェクトファイル (.o) を手動でコンパイルしようとしました

mpif90 -lmkl_gf -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm -openmp -O3  -DMPI -c a.f90

ao が作成されず、代わりに .mod ファイルが作成されます。私は fortran の経験があまりなく、少し戸惑っています。なぜなら、-c フラグはオブジェクトを作成する必要があるからです。

フラグopenmpを削除すると、gfortranがオブジェクトファイルを作成することを確認しました


ノート:

mpif90 -v
gcc version 4.4.3

OS : Ubuntu 10.04.4 LTS

4

2 に答える 2

1

フラグopenmpをfopenmpに変更しました

http://gcc.gnu.org/onlinedocs/gfortran/OpenMP.html

于 2013-04-18T09:41:14.730 に答える
0

将来誰かがこの質問に出くわした場合に備えて... OPで使用されるフラグはIntel fortranコンパイラに固有のものですが、mpif90ラッパーはgfortranコンパイラを使用しているようです。gfortran で OpenMP を使用するための適切なフラグは -fopenmp で、ライブラリは -lgomp です。Intel ライブラリを異なるベンダーのコンパイラで使用することは可能ですが、1 つのベンダーに固執するのが最も簡単です。

于 2014-04-16T05:19:21.497 に答える