使用 mpicc 编译非 mpi 库

Compile non-mpi libraries with mpicc

我想用我自己的库编译mpi。而且我不确定适用于 gcc 的选项(例如 -I/ -L/)是否可用于 mpicc。

我正在尝试使用以下选项进行编译,但出现以下错误。

mpicc -I$(CURRENT_DIR)/util -I$(CURRENT_DIR) -L$(CURRENT_DIR)/util -o server server.c
mpicc -I./util -I. -L./util -o server server.c
/tmp/ccA5be6Z.o: En la función `main':
server.c:(.text+0x195): undefined reference to `list_create'
server.c:(.text+0x219): undefined reference to `list_add'
server.c:(.text+0x228): undefined reference to `list_count'
collect2: error: ld returned 1 exit status

这些是我的server.c包括

#include <mpi.h>
#include <list.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>

这是我的 pwd/util 文件夹

$ ls
list.c list.h list.o
...

mpicc(和其他 MPI 构建命令)只是编译器之上的包装器。因此,如果您使用的是 gcc,则所有 gcc 选项和指令都可用。

关于 OpenMPI,您可以使用 --showme 选项展示编译器和使用的选项。您可以在 OpenMPI 常见问题解答 (https://www.open-mpi.org/faq/?category=mpi-apps#wrapper-showme-with-no-file). Similar options are available in MPICH (https://www.mpich.org/static/docs/v3.2.x/www1/mpicc.html)

中查看详细信息

您的问题与 MPI 无关。您只是缺少在链接步骤中添加一些对象(可能 list.o)。您应该考虑创建一个 Makefile 来简化构建过程。