0

我正在 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_

但它似乎都不起作用。有人有这方面的经验吗?

谢谢,伊兰。

编辑: 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
4

1 回答 1

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 命令行上设置它们。然后尝试再次构建测试(使用相同的选项)。

于 2012-06-20T05:43:38.653 回答