Installation 对`MPI'的未定义引用

Installation 对`MPI'的未定义引用,installation,mpi,Installation,Mpi,我正在尝试安装可扩展的并行随机数生成器库(SPRNG),但遇到了问题。配置阶段运行正常,但当我尝试进行配置时,会得到以下输出: ../../lib/libsprng.a(libsprng_a-communicate.o): In function `get_proc_info_mpi(int*, int*)': /home/fangel/Downloads/sprng4.4/SRC/communicate.cpp:13: undefined reference to `MPI_Comm_rank

我正在尝试安装可扩展的并行随机数生成器库(SPRNG),但遇到了问题。配置阶段运行正常,但当我尝试进行配置时,会得到以下输出:

../../lib/libsprng.a(libsprng_a-communicate.o): In function `get_proc_info_mpi(int*, int*)':
/home/fangel/Downloads/sprng4.4/SRC/communicate.cpp:13: undefined reference to `MPI_Comm_rank'
../../lib/libsprng.a(libsprng_a-communicate.o): In function `make_new_seed_mpi()':
/home/fangel/Downloads/sprng4.4/SRC/communicate.cpp:28: undefined reference to `MPI_Comm_dup'
/home/fangel/Downloads/sprng4.4/SRC/communicate.cpp:30: undefined reference to `MPI_Comm_rank'
/home/fangel/Downloads/sprng4.4/SRC/communicate.cpp:31: undefined reference to `MPI_Comm_size'
/home/fangel/Downloads/sprng4.4/SRC/communicate.cpp:36: undefined reference to `MPI_Bcast'
/home/fangel/Downloads/sprng4.4/SRC/communicate.cpp:38: undefined reference to `MPI_Comm_free'
../../lib/libsprng.a(libsprng_a-communicate.o): In function `get_proc_info_mpi(int*, int*)':
/home/fangel/Downloads/sprng4.4/SRC/communicate.cpp:14: undefined reference to `MPI_Comm_size'
collect2: ld returned 1 exit status
make[4]: *** [check.clfg] Error 1
make[4]: Leaving directory `/home/fangel/Downloads/sprng4.4/check/lfg'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/home/fangel/Downloads/sprng4.4/check/lfg'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/fangel/Downloads/sprng4.4/check'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/fangel/Downloads/sprng4.4'
make: *** [all] Error 2
我想这与错误的MPI配置有关,但我无法解决这个问题。我将感谢任何帮助

谢谢你,赫里斯托,它似乎更进一步: /配置CXX=MPICXF77=mpif77

换成 #包括 在communicate.cpp中,但仍会出现错误。这是电流输出的结束:

 check_flfg-check_genf.o:     /home/fangel/Downloads/sprng4.4/check/lfg/F77/check_genf.F:218: more undefined references to `ffree_rng_' follow
 check_flfg-check_genf.o: In function `test_generator':
 /home/fangel/Downloads/sprng4.4/check/lfg/F77/check_genf.F:26: undefined reference to `fmake_new_seed_'
 /home/fangel/Downloads/sprng4.4/check/lfg/F77/check_genf.F:27: undefined reference to `fmake_new_seed_'
 collect2: ld returned 1 exit status
 make[5]: *** [check.flfg] Error 1
 make[5]: Leaving directory `     /home/fangel/Downloads/sprng4.4/check/lfg/F77'
 make[4]: *** [all-recursive] Error 1
 make[4]: Leaving directory `     /home/fangel/Downloads/sprng4.4/check/lfg/F77'
 make[3]: *** [all-recursive] Error 1
 make[3]: Leaving directory `     /home/fangel/Downloads/sprng4.4/check/lfg'
 make[2]: *** [all-recursive] Error 1
 make[2]: Leaving directory `     /home/fangel/Downloads/sprng4.4/check'
 make[1]: *** [all-recursive] Error 1
 make[1]: Leaving directory `/home/fangel/Downloads/sprng4.4'
 make: *** [all] Error 2
然后,我将fwrap.h中所有行的结尾从“_uuuuuuuuuuuu”更改为“uuuuu”。错误现在不同了。我收到一个与路径/home/steve/相关的错误。。。我的计算机中不存在的:

 check_flcg-check_genf.o: In function `MAIN__':
 /home/steve/sprng4.4/check/lcg/F77/<stdin>:26: undefined reference to `fmake_new_seed__'
check\u flcg-check\u genf.o:在函数“MAIN”中:
/home/steve/sprng4.4/check/lcg/F77/:26:未定义对“fmake\u new\u seed\u”的引用

然而,我成功地制作了文件夹测试和示例程序。问题只出现在文件夹检查中。。。我不知道如何从/home/steve/移动路径。。。正确的路径。< /p>你使用<代码> MPICC < /C>(或者你的MPI C++包装器的任何名称)也链接最终的可执行文件吗?link命令中似乎缺少MPI库。我应该在哪里检查它?在Makefile中?我可以在Makefile中看到这个部分:mpiccompile=MPICXX=/usr/bin/MPICXX-MPIF77=/usr/bin/MPIF77-MPILINK=MPI_DEF=-DSPRNG\u-MPI这有用吗?文档似乎错误
configure
检测MPI编译器包装器,但仍使用未包装的编译器链接测试程序。以
/configure CXX=mpicxx F77=mpif77
的形式重新运行配置过程。另外,
communication.cpp
的开头有一个错误:
#include
应该更正为
#include
谢谢你,现在进一步。。。但我还是会出错。在应用了您的建议后,我在上面的主框中复制了当前的输出。我也有同样的问题,但我认为可能是英特尔特有的。更新
fwrap.h
中的符号名称后,转到
SRC
并键入
make clean
,然后返回主源目录并运行
make
。这将使用正确的Fortran符号名重新生成
libsprng.a