我想用自己的库编译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
...
答案 0 :(得分:0)
mpicc(和其他MPI构建命令)仅是编译器之上的包装器。因此,如果您使用的是gcc,则所有gcc选项和指令均可用。
关于OpenMPI,可以使用--showme选项显示编译器和使用的选项。您可以在OpenMPI常见问题解答(https://www.open-mpi.org/faq/?category=mpi-apps#wrapper-showme-with-no-file)中查看详细信息。 MPICH(https://www.mpich.org/static/docs/v3.2.x/www1/mpicc.html)中提供了类似的选项
您在这里遇到的问题与MPI没有关系。您只是在链接步骤中缺少添加一些对象(可能是list.o)。您应该考虑创建一个Makefile来简化构建过程。