我在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:
所以函数存在,但是带有双下划线。如何让它只有一个?
我在Bmake.inc尝试了一些事情。
# INTFACE = -Df77IsF2C
# INTFACE = -fno-underscoring
INTFACE = -DAdd_
但似乎没有任何效果。任何人都有这方面的经验吗?
谢谢, ELAN。
编辑: BLACS附带.inc文件,其中包含所有内容。我有:
F77 = mpif77
F77NO_OPTFLAGS =
F77FLAGS = $(F77NO_OPTFLAGS) -O -fPIC
F77LOADER = $(F77)
F77LOADFLAGS =
CC = mpicc
CCFLAGS = -O4 -fPIC
CCLOADER = $(CC)
CCLOADFLAGS =
- 任何一个编译标志都没有接受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
答案 0 :(得分:2)
EasyBuild(部分)为您解决了这个问题,请参阅https://github.com/hpcugent/easybuild-easyblocks/blob/master/easybuild/easyblocks/b/blacs.py了解实现BLACS构建过程的Python代码。
它还没有构建测试(但是),但它确实以正确的方式构建了BLACS。
正如您在template.inc文件中看到的那样,您应该构建xintface工具并运行它,这将帮助您确定INTFACE的正确设置。 您还需要确保TRANSCOMM设置正确,您可以使用xtc_CsameF77和xtc_UseMpich工具。
一旦确定了INTFACE和TRANSCOMM的值,重建BLACS并在make命令行中设置它们。然后尝试再次构建测试(使用相同的选项)。