2010-07-28 29 views
2

Je suis un débutant qui essaie de compiler un programme via mpicc en remplaçant icc par gcc. Je already discovered, que je dois utiliser la commande suivante pour compilerComment passer -libm à MPICC? libimf.so: avertissement: feupdateenv n'est pas implémenté et échouera toujours

$ OMPI_CC=gcc make 

Cependant, je reçois le message d'erreur suivant (which is well-known)

/opt/intel/fce/9.1.036/lib/libimf.so: warning: warning: feupdateenv is not implemented and will always fail 

J'essaie de faire

$ make clean && OMPI_CC=gcc OMPI_LDFLAGS=-libm make 

Puis je vois

/usr/bin/ld: cannot find -libm 
collect2: ld returned 1 exit status 

Cependant, je trouve le fichier, il

lrwxrwxrwx /usr/lib/libm.so -> /lib/libm.so.6 
lrwxrwxrwx /lib/libm.so.6 -> libm-2.3.6.so 
-rw-r--r-- /lib/libm-2.3.6.so 

Répondre

0

Essayez:

$ make clean 
$ OMPI_CC=gcc OMPI_LDFLAGS=-lm make 
+0

Non, ne change rien. Pour être honnête, ce message d'erreur n'est probablement pas si mauvais, puisque le programme fonctionne bien (jusqu'à présent). Je me demandais juste comment résoudre ce problème au cas où cela ferait quelque chose de mal. – Andrei

+0

Donc, vous avez l'erreur ne peut pas trouver -lm? C'est bizarre. Essayez également OMPI_LIBS. –

+0

Nono, le message d'avertissement original concernant 'feupdateenv' persiste. Je suppose que 'lm' a été trouvé. – Andrei

0

Utilisez le drapeau --showme pour déterminer les drapeaux utilisés par les enveloppes de compilateur mpicc/mpi. Puis invoquez votre propre compilateur (icc/gcc/pgcc/whatever) et ajoutez les drapeaux appropriés pour que les bibliothèques MPI correctes soient liées. Rappelez-vous, vous devez utiliser --showme avec un fichier pour que le wrapper affiche les drapeaux corrects.

Plus d'infos est ici: http://www.open-mpi.org/faq/?category=mpi-apps#wrapper-showme-with-no-file