をコンパイルされていない簡単なMPI「こんにちは、世界!」ですプログラム。Open MPI "Hello、World!"ここで
#include <stdio.h>
#include <mpi.h>
int main(int argc, char **argv)
{
int size, rank;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
printf("SIZE = %d RANK = %d\n",size,rank);
MPI_Finalize();
return(0);
}
しかし、コンパイルしていないようです:
Undefined first referenced
symbol in file
MPI::Datatype::Free() /var/tmp//ccE6aG2w.o
MPI::Win::Free() /var/tmp//ccE6aG2w.o
MPI::Comm::Comm() /var/tmp//ccE6aG2w.o
ld: fatal: symbol referencing errors. No output written to main
collect2: ld returned 1 exit status
私は、多くのことをググメーリングリストを見、彼らの何千もしました。彼らはlibmpi_cxx
がリンクしていないと言います。しかし、それはコンパイラフラグにあります。
mpic++ --showme:compile
-I/usr/openmpi/ompi-1.5/include -I/usr/openmpi/ompi-1.5/include/openmpi
mpic++ --showme:link
-R/opt/mx/lib -R/usr/openmpi/ompi-1.5/lib -L/usr/openmpi/ompi-1.5/lib -lmpi -lopen-rte -lopen-pal -lnsl -lrt -lm -ldl -lsocket -lmpi_cxx
私のコンパイラは、G ++である:
はここ--showme
データです。
(正しい)ライブラリを正しくリンクしていますか? –
@MarkGarcia適切なリンクを張ったらどういう意味ですか? – efpies
このコードのコンパイルとリンクに使用する完全なコマンドラインを表示できますか?書かれているように、あなたのコードは 'mpicc'とコンパイルしてリンクできなければなりません。これはC++バインディングへの参照をしないからです。 – Novelocrat