Mein gcc kompiliert gut, aber clang schlägt mit der folgenden Meldung fehl:
clang -fopenmp=libomp -o main main.c
main.c:5:10: fatal error: 'omp.h' file not found
Ich habe auch das libomp5
Paket installiert und das Flag in geändert -fopenmp=libomp5
, obwohl es auch nicht geholfen hat:
clang -fopenmp=libomp5 -o main main.c
clang: error: unsupported argument 'libomp5' to option 'fopenmp='
clang: error: unsupported argument 'libomp5' to option 'fopenmp='
Diese Empfehlungen haben nicht funktioniert.
Wäre dankbar für Hinweise zur Installation notwendiger 16.04-spezifischer Pakete und zum Übergeben entsprechender Flags.
Antworten:
Ich hatte das gleiche Problem.
Es wurde mit Ubuntu 16.10 behoben
Dann
Ebenfalls
funktioniert.
GCC und Clang verwenden unterschiedliche OpenMP-Laufzeitbibliotheken: libgomp bzw. libomp.
Clangs Laufzeit ist die LLVM OpenMP- Laufzeit, die wiederum auf der Intel OpenMP-Laufzeit (Open Source) basiert. https://www.openmprtl.org/
Auf meinem System installiert GCC
omp.h
unterund
libomp-dev
installiertomp.h
beiDies sind verschiedene Header-Dateien, die unterschiedliche Funktionsdefinitionen enthalten. Es mag in Ordnung sein, eine der Header-Dateien für zB zu verwenden,
omp_get_wtime()
aber im Allgemeinen denke ich, dass es wahrscheinlich besser ist, die Header-Datei zu verwenden, die der Laufzeit entspricht, mit der verknüpft ist.quelle
sudo apt install libomp.dev
.Es scheint omp.h Datei nicht in Ihrem System vorhanden PATH . Versuchen Sie zunächst, die Datei omp.h zu finden , wenn Sie nicht wissen, wo sie sich befindet:
Führen Sie dann diesen Befehl aus, um Ihren Code zu kompilieren:
quelle
omp.h
.*.h
sind Header-Dateien, warum sollte er sie seinem Pfad hinzufügen wollen? Sie sollten/usr/include
zum Beispiel dabei sein.