schwerwiegender Fehler: mpi.h: Keine solche Datei oder Verzeichnis #include
Lesezeit: 4 Minuten
Benutzer2804865
wenn ich mein script nur mit kompiliere
#include <mpi.h>
es sagt mir, dass es keine solche Datei oder dieses Verzeichnis gibt. Aber wenn ich den Pfad zu mpi.h als einfüge
#include "/usr/include/mpi/mpi.h"
(der Pfad ist korrekt) es gibt zurück:
In file included from /usr/include/mpi/mpi.h:2087:0,
from lbm.cc:7:
/usr/include/mpi/openmpi/ompi/mpi/cxx/mpicxx.h:35:17: fatal error: mpi.h: No such file or directory
#include "mpi.h"
^
compilation terminated.
Weiß jemand, wie man das beheben kann?
Was ist dein Compiler und Betriebssystem?
– Muradin
13. November 2014 um 23:04 Uhr
g++ unter Linux. und funktioniert auch nicht.
– Benutzer2804865
13. November 2014 um 23:34 Uhr
Programme, die das Message Passing Interface verwenden, sollten mit etwas wie kompiliert werden mpicc main.c -o main oder mpiCC main.cpp -o main. Ist es Ihr Fall? Bezüglich der zweiten Meldung: Möglicherweise haben Sie zwei Implementierungen der MPI-Standards auf Ihrem Computer. Sie können versuchen, mehr zu erfahren, indem Sie tippen which mpicc, which mpirun, mpirun --version oder module avail. Die Implementierung (openmpi oder mpich2 oder …) des Compilerbefehls muss mit dem Befehl zum Ausführen des Programms identisch sein mpirun -np 2 main.
– Francis
13. November 2014 um 23:38 Uhr
Das Problem ist mit ziemlicher Sicherheit, dass Sie nicht die MPI-Compiler-Wrapper verwenden. Wann immer Sie ein MPI-Programm kompilieren, sollten Sie die MPI-Wrapper verwenden:
C – mpicc
C++ – mpiCC, mpicxx, mpic++
FORTRAN- mpifort, mpif77, mpif90
Diese Wrapper erledigen die ganze Drecksarbeit für Sie, um sicherzustellen, dass alle geeigneten Compiler-Flags, Bibliotheken, Include-Verzeichnisse, Bibliotheksverzeichnisse usw. enthalten sind, wenn Sie Ihr Programm kompilieren.
Das Rätsel liegt in der Tatsache, dass Openmpi keine MPI-Wrapper für mpicc, mpicxx usw. hat.
– Marc J. Driftmeyer
26. Dezember 2014 um 19:43 Uhr
Es mag einige Implementierungen geben, die sie nicht bereitstellen, aber Open MPI gehört nicht dazu. Das hat es auf jeden Fall zumindest mpicc und mpicxx und mpifortan.
– Wesley Bland
26. Dezember 2014 um 19:53 Uhr
kannst du erklären wie man das behebt? Ich versuche, jemandes Programm zu machen, und es gibt den Fehler im ursprünglichen Beitrag. es sucht nach mpi.h. Ich habe die API mit apt-get installiert. Bekomme immer noch den gleichen Fehler.
– Benutzer391339
28. Mai 2016 um 22:20 Uhr
Es wurden keine Informationen darüber gegeben, wie diese Wrapper zu verwenden sind; Hinzufügen zum Compiler like -mpiCCeinen Wrapper installieren und in die Quelldatei einfügen?
– Frottee
5. Oktober 2019 um 10:27 Uhr
@ user391339 und Romario Standardmäßig verwendet Ihre IDE cmake oder so, um die .cpp-Datei zu kompilieren, richtig? .. Stattdessen verwenden Sie den mpi-Wrapper (der einfach ein Befehl zum Kompilieren/Ausführen ist), um Ihr Programm zu kompilieren/auszuführen. Ein Beispiel wäre: $ mpic++ main.cpp und ein Beispiel zum Ausführen Ihres Programms wäre $ mpirun -np 2 a.out
Dieser Befehl generiert eine ausführbare Datei mit Ihrem Programm. Beispiel: Sie können Folgendes ausführen:
$ ./example
Schlagen Sie vor, die Wrapper zu verwenden, um einige Informationen zu extrahieren und sie dann erneut an die Wrapper zu übergeben?
– Gilles Gouaillardet
3. März 2018 um 15:32 Uhr
Auf meinem System Ubuntu 16.04. Ich installierte :
sudo apt install libopenmpi-dev
nachdem ich mpiCC zum Kompilieren verwendet habe und es funktioniert
Wie oben vorgeschlagen, die Aufnahme von
/usr/lib/openmpi/include
im include-Pfad kümmert sich darum (in meinem Fall)
/usr/lib64/mpi/gcc/openmpi/include/ für OpenSUSE Leap
– max
3. November 2016 um 7:49 Uhr
Marc J. Driftmeyer
Debian scheint Folgendes zu enthalten:
mpiCC.openmpi
mpic++.openmpi
mpicc.openmpi
mpicxx.openmpi
mpif77.openmpi
mpif90.openmpi
Ich werde Symlinks von jedem für mpic usw. testen und sehen, ob das hilft, wenn HDF5-openmpi aktiviert ist, mpi.h zu finden.
Nehmen Sie das zurück Debian enthält Symlinks über sein alternatives System und es kann immer noch nicht die richtigen Pfade zwischen HDF5-Openmpi-Paketen und mpi.h finden, auf die im H5public.h-Header verwiesen wird.
/usr/lib64/mpi/gcc/openmpi/include/ für OpenSUSE Leap
– max
3. November 2016 um 7:49 Uhr
Felix Crazzolara
Auf Ubuntu 18.04 musste ich installieren:
sudo apt install lam4-dev
Lam in der Antike. Verwenden Sie es nicht. Verwenden Sie Open-MPI 3+ oder MPICH 3+.
– Jeff Hammond
10. April 2021 um 4:28 Uhr
14105100cookie-checkschwerwiegender Fehler: mpi.h: Keine solche Datei oder Verzeichnis #includeyes
Was ist dein Compiler und Betriebssystem?
– Muradin
13. November 2014 um 23:04 Uhr
g++ unter Linux. und funktioniert auch nicht.
– Benutzer2804865
13. November 2014 um 23:34 Uhr
Programme, die das Message Passing Interface verwenden, sollten mit etwas wie kompiliert werden
mpicc main.c -o main
odermpiCC main.cpp -o main
. Ist es Ihr Fall? Bezüglich der zweiten Meldung: Möglicherweise haben Sie zwei Implementierungen der MPI-Standards auf Ihrem Computer. Sie können versuchen, mehr zu erfahren, indem Sie tippenwhich mpicc
,which mpirun
,mpirun --version
odermodule avail
. Die Implementierung (openmpi oder mpich2 oder …) des Compilerbefehls muss mit dem Befehl zum Ausführen des Programms identisch seinmpirun -np 2 main
.– Francis
13. November 2014 um 23:38 Uhr