在 openSUSE 上用 C 语言在 mpi 中编译 hello world 程序时出错
Posted
技术标签:
【中文标题】在 openSUSE 上用 C 语言在 mpi 中编译 hello world 程序时出错【英文标题】:Error while compiling hello world program in mpi in C on openSUSE 【发布时间】:2014-02-24 06:57:47 【问题描述】:程序:
#include <stdio.h>
#include <mpi.h>
int main (argc, argv)
int argc;
char *argv[];
int rank, size;
MPI_Init (&argc, &argv); /* starts MPI */
MPI_Comm_rank (MPI_COMM_WORLD, &rank); /* get current process id */
MPI_Comm_size (MPI_COMM_WORLD, &size); /* get number of processes */
printf( "Hello world from process %d of %d\n", rank, size );
MPI_Finalize();
return 0;
错误:
/usr/lib/gcc/i586-suse-linux/4.4/../../../../i586-suse-linux/bin/ld: cannot find -lopen-rte
collect2: ld returned 1 exit status
编译命令:mpicc hello.c -o ./hello
。
我正在尝试构建一个 openSUSE 节点集群。
所以我正在测试 mpich2 程序是否在每个节点上运行。
【问题讨论】:
检查这些链接,您的系统似乎配置错误(例如您缺少某些软件包)lam-mpi.org/MailArchives/lam/2010/04/14195.php, lam-mpi.org/MailArchives/lam/2010/04/14196.php 这是一个链接器错误;您缺少一个密钥库 (libopen-rte.so
)。
k 谢谢...我会解决这个问题.....也在其他节点上 m 收到此错误:mpi.h 没有这样的文件或目录
【参考方案1】:
libopen-rte.so 指的是 OpenMPI,而不是 MPICH2。使用 mpi-selector 工具检查默认 MPI 实现。我个人更喜欢 OpenMPI。
【讨论】:
【参考方案2】:您似乎同时安装了两个 MPI 库。虽然这是可能的,但如果您不是很小心,配置和使用通常会很痛苦。我建议卸载 Open MPI 或 MPICH。那应该可以解决您的问题。
【讨论】:
以上是关于在 openSUSE 上用 C 语言在 mpi 中编译 hello world 程序时出错的主要内容,如果未能解决你的问题,请参考以下文章
有没有在 Windows 上用 C 语言使用 winhttp 的完整例子?