在 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 的完整例子?

在 Linux 上用 C 语言读写串口

Intel MPI 5.1.3安装配置详解

Intel MPI 5.1.3安装配置详解

在 Solaris、Linux、Windows 和 Mac 上用 C 语言清除屏幕

如何在windows上用C语言实现MQTT协议