PDA

Visualizza la versione completa : [wxDev-C++ & MPI.H] Come risolvere un Linker error ed altri errori


Skull260287
11-10-2008, 17:01
Ciao a tutti, all'universitÓ sto affrontanto il corso di Calcolo Parallelo e Distribuito, davvero molto interessante. Ho scaricato dal sito http://www-unix.mcs.anl.gov/mpi/mpich1/download.html mpich che contiene il simulatore, gli include e le librerie. Nella configurazione del simulatore nessun problema, l'host mi Ŕ stato riconosciuto.

Questo per˛ al momento mi Ŕ inutile perchŔ non riesco a compilare utilizzando il wxDec-C++ il sorgente contenente l'inclusione della libreria mpi.h.
Ho copiato le cartelle lib e include dalle cartelle sdk e sdk.gcc alla cartella di dev, aggiungendo tutti i file a quelle giÓ presenti ed inoltre nelle impostazioni del compilatore ho aggiunto le cartelle originarie all'interno della directory del MPich.


Questo Ŕ il codice del programma di test:



#include <mpi.h>
#include <stdio.h>
#include <stdlib.h>

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

MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);

printf("I am %d of %d\n", rank, size);
fflush(stdout);

MPI_Finalize();
return 0;
}


Questo Ŕ l'errore che mi viene riportato:



[Linker Error] undefined reference to `MPI_Init'
[Linker Error] undefined reference to `MPI_Comm_rank'
[Linker Error] undefined reference to `MPI_Comm_size'
[Linker Error] undefined reference to `MPI_Finalize'
ld returned 1 exit status


Questo Ŕ il log di compilazione:



Compilatore: Default GCC compiler
Esecuzione di g++.exe...
g++.exe "*MY DIRECTORY*\Prova.cpp" -o "*MY DIRECTORY*\Prova.exe" -I"C:\Programmi\Dev-Cpp\lib\gcc\mingw32\3.4.2\include" -I"C:\Programmi\Dev-Cpp\include\c++\3.4.2\backward" -I"C:\Programmi\Dev-Cpp\include\c++\3.4.2\mingw32" -I"C:\Programmi\Dev-Cpp\include\c++\3.4.2" -I"C:\Programmi\Dev-Cpp\include" -I"C:\Programmi\Dev-Cpp\" -I"C:\Programmi\Dev-Cpp\include\common\wx\msw" -I"C:\Programmi\Dev-Cpp\include\common\wx\generic" -I"C:\Programmi\Dev-Cpp\include\common\wx\fl" -I"C:\Programmi\Dev-Cpp\include\common\wx\gizmos" -I"C:\Programmi\Dev-Cpp\include\common\wx\html" -I"C:\Programmi\Dev-Cpp\include\common\wx\mmedia" -I"C:\Programmi\Dev-Cpp\include\common\wx\net" -I"C:\Programmi\Dev-Cpp\include\common\wx\ogl" -I"C:\Programmi\Dev-Cpp\include\common\wx\plot" -I"C:\Programmi\Dev-Cpp\include\common\wx\protocol" -I"C:\Programmi\Dev-Cpp\include\common\wx\stc" -I"C:\Programmi\Dev-Cpp\include\common\wx\svg" -I"C:\Programmi\Dev-Cpp\include\common\wx\xml" -I"C:\Programmi\Dev-Cpp\include\common\wx\xrc" -I"C:\Programmi\Dev-Cpp\include\common\wx" -I"C:\Programmi\Dev-Cpp\include\common" -I"C:\Programmi\MPICH\SDK.gcc\include" -I"C:\Programmi\MPICH\SDK\Include" -L"C:\Programmi\Dev-Cpp\Lib" -L"C:\Programmi\MPICH\SDK\Lib" -L"C:\Programmi\MPICH\SDK.gcc\lib"
C:\DOCUME~1\*USER*\IMPOST~1\Temp/cc4Abaaa.o:Prova.cpp: (.text+0x38) : undefined reference to `MPI_Init'
C:\DOCUME~1\*USER*\IMPOST~1\Temp/cc4Abaaa.o:Prova.cpp: (.text+0x4b) : undefined reference to `MPI_Comm_rank'

C:\DOCUME~1\*USER*\IMPOST~1\Temp/cc4Abaaa.o:Prova.cpp: (.text+0x5e) : undefined reference to `MPI_Comm_size'
C:\DOCUME~1\*USER*\IMPOST~1\Temp/cc4Abaaa.o:Prova.cpp: (.text+0x8d) : undefined reference to `MPI_Finalize'
collect2: ld returned 1 exit status

Esecuzione terminata


Grazie 1000 per l'aiuto

denis76
11-10-2008, 19:39
Devi linckare la libreria compilata mpi, oppure includere il sorgente oltre l'header di quella libreria.

Skull260287
12-10-2008, 17:27
Originariamente inviato da denis76
Devi linckare la libreria compilata mpi, oppure includere il sorgente oltre l'header di quella libreria.

Ciao, grazie della risposta ma non ho capito cosa aggiungere, potresti farmi un esempio per favore?

oregon
12-10-2008, 17:44
Nessun esempio ... aggiungi il file di libreria quando compili ...

Come compili? Con un IDE? Da linea di comando?

Skull260287
12-10-2008, 20:20
Originariamente inviato da oregon
Nessun esempio ... aggiungi il file di libreria quando compili ...

Come compili? Con un IDE? Da linea di comando?

Compilo dal wxDev-C++

oregon
12-10-2008, 20:22
Originariamente inviato da Skull260287
Compilo dal wxDev-C++

Tramite una interfaccia grafica quindi? Un IDE? Esiste un menu "opzioni" o qualcosa del genere?

Se c'e', vedi se puoi indicare delle librerie aggiuntive.

Skull260287
12-10-2008, 20:27
Originariamente inviato da oregon
Tramite una interfaccia grafica quindi? Un IDE? Esiste un menu "opzioni" o qualcosa del genere?

Se c'e', vedi se puoi indicare delle librerie aggiuntive.

Si c'Ŕ nelle opzioni del compilatore e nella sezione dedicata alle librerie ho giÓ aggiunto lae cartelle lib presenti all'interno dell zio prelevato da http://www-unix.mcs.anl.gov/mpi/mpich1/

oregon
12-10-2008, 20:36
Quale versione? Quale zip?

Skull260287
12-10-2008, 20:40
Originariamente inviato da oregon
Quale versione? Quale zip?

mpich.nt.1.2.5.exe (6 MB June 8, 2003)

Presente su http://www-unix.mcs.anl.gov/mpi/mpich1/mpich-nt/

oregon
12-10-2008, 20:49
Oltre ad indicare la directory delle librerie, hai aggiunto la libreria

libmpich.a

esplicitamente nel tuo progetto?

Loading