Не удается выполнить связывание с использованием программы mpicc в C++.C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Не удается выполнить связывание с использованием программы mpicc в C++.

Сообщение Anonymous »

Я использую 64-разрядную версию Ubuntu 11.04. Я установил OpenMPI. Я пытаюсь создать следующий код, который представляет собой фрагмент тестовой задачи из книги Gropp/Lusk/Skjellum «Использование MPI»:

Код: Выделить всё

#include 
#include "mpi.h"

int main(int argc, char *argv[])
{
int size, rank;

MPI::Init(argc, argv);

size = MPI::COMM_WORLD.Get_size();
rank = MPI::COMM_WORLD.Get_rank();

MPI::Finalize();
return 0;
}
Из терминала я могу использовать оболочку mpicc для получения следующей информации, необходимой мне для компиляции и компоновки на моем компьютере:

Код: Выделить всё

$ mpicc --showme:compile
-I/usr/lib/openmpi/include -I/usr/lib/openmpi/include/openmpi -pthread
$ mpicc --showme:link
-pthread -L/usr/lib/openmpi/lib -lmpi -lopen-rte -lopen-pal -ldl -Wl,--export-dynamic -lnsl -lutil -lm -ldl
Я могу успешно скомпилировать код. Однако связывание не удается. Вот мои шаги компилятора и компоновщика:

Код: Выделить всё

make all
Building file: ../main.cpp
Invoking: GCC C++ Compiler
mpicc -I/usr/lib/openmpi/include -I/usr/lib/openmpi/include/openmpi -O0 -g3 -Wall -c -fmessage-length=0 -pthread -MMD -MP -MF"main.d" -MT"main.d" -o"main.o" "../main.cpp"
Finished building: ../main.cpp

Building target: test
Invoking: GCC C++ Linker
mpicc -L/usr/lib/openmpi/lib -pthread -Wl,--export-dynamic -o"test"  ./main.o   -lm -ldl -lmpi -lopen-rte -lopen-pal -lnsl -lutil
./main.o: In function `main':
/home/djunderw/ncsu/workspace/test/Debug/../main.cpp:20: undefined reference to `MPI::COMM_WORLD'
/home/djunderw/ncsu/workspace/test/Debug/../main.cpp:21: undefined reference to `MPI::COMM_WORLD'
./main.o: In function `__static_initialization_and_destruction_0':
/usr/include/c++/4.4/iostream:72: undefined reference to `std::ios_base::Init::Init()'
/usr/include/c++/4.4/iostream:72: undefined reference to `std::ios_base::Init::~Init()'
.......
Я использовал ....... выше, чтобы обозначить тот факт, что сообщения об ошибках продолжаются и продолжаются — их довольно много , но я не думаю, что их все нужно здесь показывать. Если да, спросите, и я вставлю их все.

Я подозреваю, что мои флаги компоновщика расположены в неправильном порядке. > Другая тема приходит к такому выводу: ошибки компоновки при использовании G++ для кода MPI. Но если да, то я не могу понять, что не так.

Почему у меня не работает ссылка?

Подробнее здесь: https://stackoverflow.com/questions/137 ... -c-program
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»