Đây là một MPI đơn giản "Xin chào, Thế giới!" chương trình.Mở MPI "Xin chào, Thế giới!" không biên dịch
#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);
}
Tuy nhiên, nó dường như không biên dịch:
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
Tôi đã googled rất nhiều, danh sách gửi thư xem, hàng ngàn trong số họ. Họ nói rằng libmpi_cxx
không liên kết. Nhưng nó nằm trong cờ biên dịch.
Đây là --showme
dữ liệu:
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
trình biên dịch của tôi là g ++.
Bạn có đang liên kết đúng thư viện (đúng) không? –
@MarkGarcia, ý của bạn là gì sau khi liên kết đúng? – efpies
Bạn có thể cho chúng tôi thấy (các) dòng lệnh hoàn chỉnh mà bạn sử dụng để biên dịch và liên kết mã này không? Như được viết, mã của bạn sẽ có thể biên dịch và liên kết với 'mpicc', vì nó không tham chiếu đến các ràng buộc C++. – Novelocrat