首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fortran C-调用约定-编译BLACS时下划线不匹配

Fortran C-调用约定-编译BLACS时下划线不匹配
EN

Stack Overflow用户
提问于 2012-06-18 19:35:10
回答 1查看 285关注 0票数 0

我正在编译Linux上的BLACS包。我编译了安装目录的内容包。当我尝试构建目录测试的内容时,我得到了错误

代码语言:javascript
复制
blacstest.f:(.text+0xb9): undefined reference to `blacs_gridinit_'

等。

当我尝试在库中查找函数时,得到的消息是,

代码语言:javascript
复制
~/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中尝试了一些东西。

代码语言:javascript
复制
#   INTFACE = -Df77IsF2C
#   INTFACE = -fno-underscoring
    INTFACE = -DAdd_

但这一切似乎都行不通。有谁有这方面的经验吗?

谢谢,伊兰。

编辑: BLACS附带了一个.inc文件,其中配置了所有内容。我有:

代码语言:javascript
复制
   F77            = mpif77
   F77NO_OPTFLAGS = 
   F77FLAGS       = $(F77NO_OPTFLAGS) -O -fPIC 
   F77LOADER      = $(F77)
   F77LOADFLAGS   = 
   CC             = mpicc
   CCFLAGS        = -O4 -fPIC
   CCLOADER       = $(CC)
   CCLOADFLAGS    =

在这两个编译标志中都不接受-assume 2下划线。此外,模板.inc文件如下所示:

代码语言:javascript
复制
#  ---------------------------------------------------------------------------
#  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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-20 13:43:39

EasyBuild (部分)为您解决了这个问题,有关实现BLACS构建过程的https://github.com/hpcugent/easybuild-easyblocks/blob/master/easybuild/easyblocks/b/blacs.py代码,请参阅Python。

它还没有构建测试,但它确实以正确的方式构建了BLACS。

正如您在template.inc文件中看到的,您应该构建并运行xintface工具,这将帮助您找出INTFACE的正确设置。您还需要确保TRANSCOMM设置是正确的,您可以使用xtc_CsameF77和xtc_UseMpich工具。

计算出INTFACE和TRANSCOMM的值后,重新构建BLACS并在make命令行上设置这些值。然后再次尝试构建测试(使用相同的选项)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11081963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档