Компилировать библиотеки не-mpi с помощью mpicc - PullRequest
0 голосов
/ 19 апреля 2019

Я хочу скомпилировать 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
...

1 Ответ

0 голосов
/ 22 апреля 2019

mpicc (и другие команды сборки MPI) - это только оболочки над вашими компиляторами. Поэтому, если вы используете gcc, доступны все опции и директивы gcc.

Что касается OpenMPI, вы можете показать компилятор и опции, используемые с помощью опции --showme. Вы можете увидеть подробности в FAQ по 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, чтобы упростить процесс сборки.

...