Linux で BLACS パッケージをコンパイルしています。パッケージ、INSTALL ディレクトリの内容をコンパイルしました。ディレクトリ TESTING の内容をビルドしようとすると、エラーが発生します
blacstest.f:(.text+0xb9): undefined reference to `blacs_gridinit_'
等
ライブラリで関数を探してみたところ、メッセージは次のとおりです。
~/sources/BLACS/LIB$ nm blacs_MPI-LINUX-0.a | less | grep blacs_gridinit_
blacs_gridinit_.o:
0000000000000000 T blacs_gridinit__
Cblacs_gridinit_.oo:
したがって、関数は存在しますが、アンダースコアが 2 つ付いています。1つだけにする方法は?
Bmake.incでいくつか試してみました。
# INTFACE = -Df77IsF2C
# INTFACE = -fno-underscoring
INTFACE = -DAdd_
しかし、どれもうまくいかないようです。誰でもこれについて経験がありますか?
ありがとう、エラン。
編集: BLACS には、すべてが構成された .inc ファイルが付属しています。私は持っている:
F77 = mpif77
F77NO_OPTFLAGS =
F77FLAGS = $(F77NO_OPTFLAGS) -O -fPIC
F77LOADER = $(F77)
F77LOADFLAGS =
CC = mpicc
CCFLAGS = -O4 -fPIC
CCLOADER = $(CC)
CCLOADFLAGS =
-assume 2underscore は、どちらのコンパイル フラグでも受け入れられませんでした。さらに、テンプレート .inc ファイルには次のように記載されています。
# ---------------------------------------------------------------------------
# The Fortran 77 to C interface to be used. If you are unsure of the correct
# setting for your platform, compile and run BLACS/INSTALL/xintface.
# Choices are: Add_, NoChange, UpCase, or f77IsF2C.
# ---------------------------------------------------------------------------
# INTFACE = -Df77IsF2C